JSON デコードの世界では、完全にデコードする必要のないネストされたオブジェクトに遭遇することがあります。解析する。代わりに、生の文字列またはバイト配列として扱うことをお勧めします。このアプローチを示すサンプル コードは次のとおりです。
package main import ( "encoding/json" "fmt" ) type Bar struct { ID int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { jsonStr := []byte(`{ "id" : 15, "foo" : { "foo": 123, "bar": "baz" } }`) var bar Bar if err := json.Unmarshal(jsonStr, &bar); err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
この例では、Bar 構造体に ID と Foo の 2 つのフィールドが含まれています。 ID フィールドは int64 ですが、Foo フィールドは json.RawMessage として宣言されます。この型を使用すると、ネストされたオブジェクトに関連付けられた JSON バイトを保持できます。
JSON をデコードすると、RawMessage フィールドには、ネストされたオブジェクトを表す生の JSON バイトが保存されます。これには、そのオブジェクト内のネストされたフィールドがすべて含まれるため、後で必要に応じてアクセスできます。
このアプローチは、計算リソースを節約するために JSON の特定の部分の解析を延期したい場合に便利です。また、オブジェクトごとにカスタム タイプを定義する必要がなく、ネストされたオブジェクトをより柔軟に処理できるようになります。
以上がGo でネストされた JSON オブジェクトを生データにデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。