目的は、既知のキーと値のペアが混在している JSON 文字列をアンマーシャリングすることです。および不明なキーと値のペアを Go 構造体に追加します。既知のフィールドは特定の構造体フィールドにアンマーシャリングする必要がありますが、未知のフィールドは構造体内のキーと値のペアのコレクションとして保存する必要があります。
これを実現するには、構造体で次のことができます。既知のフィールドとマップのスライスの組み合わせで定義できます:
<code class="go">type Message struct { Known1 string `json:"known1"` Known2 string `json:"known2"` Unknowns []map[string]interface{} }</code>
この JSON 文字列:
<code class="json">{"known1": "foo", "known2": "bar", "unknown1": "car", "unknown2": 1}</code>
は次を使用してアンマーシャリングできます。手順:
構造体を使用する代わりに、JSON をマップ[文字列]インターフェース{}に直接アンマーシャリングすることもできます。これにより、すべてのキーと値のペアに動的コレクションとしてアクセスできるようになります。
<code class="go">var msg map[string]interface{} json.Unmarshal([]byte(jsonMsg), &msg)</code>
構造体を使用するかマップを使用するかの選択は、アプリケーションの特定の要件によって異なります。事前に定義された既知のフィールドと構造化されたアプローチが必要な場合は、構造体が適しています。未知のフィールドの正確な性質が事前にわからない場合、またはより柔軟な動的なデータ構造が必要な場合は、マップが実行可能なオプションです。
以上が任意のキーと値のペアを含む JSON を Go 構造体にアンマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。