変数構造を使用した JSON のデコード
JSON データを扱う場合、変化するデータ構造を扱うのは難しい場合があります。このような場合、固定構造体を使用した json.Unmarshal() のような従来のメソッドは実用的ではなくなります。このシナリオの解決策は次のとおりです。
解決策:マップ[文字列]インターフェースにアンマーシャルする{}
事前定義された構造体に依存する代わりに、JSON をアンマーシャルして、汎用のマップ[文字列]インターフェイス{} タイプ。これにより、さまざまな構造の JSON データを処理できるようになります。
次の JSON について考えます:
{ "votes": { "option_A": "3" } }
この JSON に「count」キーを追加するには、次のようにアンマーシャリングできます。
package main import ( "encoding/json" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } raw["count"] = 1 out, err := json.Marshal(raw) if err != nil { panic(err) } println(string(out)) }
このアプローチにより、固定データ モデルに束縛されずに JSON 構造を簡単に変更できます。 map[string]interface{} タイプは、動的な JSON 構造を柔軟に処理できます。
以上がGo で変数構造を含む JSON をデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。