ホームページ > バックエンド開発 > Golang > マップを使用して Go で不明なフィールド名を持つ JSON をアンマーシャリングする方法

マップを使用して Go で不明なフィールド名を持つ JSON をアンマーシャリングする方法

DDD
リリース: 2024-12-26 03:32:09
オリジナル
337 人が閲覧しました

How to Unmarshal JSON with Unknown Field Names in Go Using a Map?

マップを使用した不明なフィールド名を持つ JSON のアンマーシャリング

不明なフィールド名を持つ JSON のアンマーシャリングは、特にオブジェクト構造が一貫している場合に課題が生じます。この質問では、そのようなシナリオの処理方法について説明し、Golang マップを使用した解決策を提供します。

問題:

POST リクエストから提供された JSON 応答には、未知の名前。目標は、既知のフィールドの一貫した構造を維持しながら、この JSON を構造体にアンマーシャリングすることです。

解決策:

ステップ 1: 構造体を作成する既知のフィールド

一貫したデータを表す mData という名前の構造体を定義します。 JSON 内のフィールド:

type mData struct {
    KnownField1 [][5]int `json:"known_field_1"`
    KnownField2 [][5]int `json:"known_field_2"`
    KnownField3 [][5]int `json:"known_field_3"`
}
ログイン後にコピー

ステップ 2: マップを使用して不明なフィールド名を処理する

不明なフィールド名をキーとして保存する data というマップを作成し、値としての mData のインスタンス:

var data map[string]mData
ログイン後にコピー

ステップ 3: JSON をマップにアンマーシャルします

json.Unmarshal を使用して、JSON 本文をマップにバインドします:

if err := json.Unmarshal(body, &data); err != nil {
    panic(err)
}
ログイン後にコピー

ステップ 4: 結果を出力します

マップには、不明なフィールド名と関連する mData インスタンスが含まれるようになります。次のコードを使用して値にアクセスできます:

for k, v := range data {
    fmt.Println(k, v)
}
ログイン後にコピー

このアプローチにより、既知のフィールドの構造を維持しながら、未知のフィールド名を持つ JSON をアンマーシャリングできます。提供されたコードの出力は次のようになります:

unknown_field [[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]]
ログイン後にコピー

以上がマップを使用して Go で不明なフィールド名を持つ JSON をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート