マップを使用した不明なフィールド名を持つ 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 サイトの他の関連記事を参照してください。