Go Unmarshal を使用した複雑な JSON の解析
Go では、encoding/json パッケージは、JSON データを解析するための json.Unmarshal 関数を提供します。このデータは、予期しないデータ構造を反復するために、事前定義された構造体またはインターフェイス タイプにアンマーシャリングできます。{}ただし、複雑な JSON の解析は難しい場合があります。
たとえば、次の JSON を考えてみましょう。
{ "k1": "v1", "k2": "v2", "k3": 10, "result": [ [ ["v4", "v5", {"k11": "v11", "k22": "v22"}], ... ["v4", "v5", {"k33": "v33", "k44": "v44"}] ], "v3" ] }
json.Unmarshal を使用してこの JSON を解析するには、interface{} 変数を作成し、解析した結果をそこに保存します:
type MyData struct { v1 string v2 string v3 int result [][]MySubData result2 string } type MySubData struct { v1 string v2 string result map[string]string } var f interface{} err := json.Unmarshal(b, &f)
アンマーシャリング後、f 変数は文字列を含むマップになります。キーと空のインターフェイス値。このデータにアクセスするには、型アサーションを使用して f を map[string]interface{} に変換し、それを反復処理します。
m := f.(map[string]interface{}) for k, v := range m { switch vv := v.(type) { case string: // Handle string values case int: // Handle integer values case []interface{}: // Handle array values default: // Handle unknown types } }
このアプローチにより、型を維持しながら予期しない JSON データ構造を操作できるようになります。安全性。詳細については、JSON と Go に関する元の記事を参照してください。
以上がGo の「json.Unmarshal」を使用して複雑な JSON 構造を効果的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。