構造が不明な JSON のデコード
プログラミングの分野では、JSON (JavaScript Object Notation) は、内部のデータを表現する手段として機能することがよくあります。ソフトウェアアプリケーション。ただし、馴染みのない構造の JSON に遭遇した場合、特定の情報を抽出することが困難になる可能性があります。次のシナリオを考えてみましょう:
次のように JSON 文字列を処理する必要があります:
{ "votes": { "option_A": "3" } }
目標は、「count」キーを含めてこの JSON を拡張することです。その結果、次の出力が得られます。 :
{ "votes": { "option_A": "3" }, "count": "1" }
この課題は、初期 JSON の未知の構造から生じます。特定の型付き構造体で json.Unmarshal 関数を使用するなどの従来の方法は適用できなくなります。
解決策: マップにアンマーシャルする
この障害を克服するには、次のようにします。 Go のマップの柔軟性を活用できます。次のコード スニペットは、JSON をマップ[文字列]インターフェイス{}にアンマーシャリングする方法を示しています。
package main import ( "encoding/json" "fmt" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } // Modify the map by adding the "count" key raw["count"] = 1 // Marshal the modified map back to JSON out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
JSON をマップにアンマーシャリングすることで、あらゆる入力に対応できる型に依存しないデータ構造を効果的に作成します。 。これにより、事前定義された型に依存せずに、JSON コンテンツに動的にアクセスして変更することができます。
上記のコードの最終出力は次のとおりです。
{ "votes": { "option_A": "3" }, "count": "1" }
このアプローチは、便利で柔軟な機能を提供します。未知の構造を持つ JSON をデコードするためのソリューションで、開発者がデータを効率的に抽出して操作できるようにします。
以上がGoで未知の構造を持つJSONをデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。