In der Welt der JSON-Dekodierung kann es vorkommen, dass Sie auf ein verschachteltes Objekt stoßen, das Sie nicht vollständig verarbeiten müssen analysieren. Stattdessen möchten Sie es möglicherweise lieber als Rohzeichenfolge oder Byte-Array behandeln. Hier ist ein Beispielcode, der diesen Ansatz demonstriert:
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) }
In diesem Beispiel enthält die Bar-Struktur zwei Felder: ID und Foo. Das ID-Feld ist ein int64, während das Foo-Feld als json.RawMessage deklariert ist. Dieser Typ ermöglicht es uns, die mit dem verschachtelten Objekt verknüpften JSON-Bytes zu speichern.
Beim Dekodieren des JSON speichert das RawMessage-Feld die rohen JSON-Bytes, die das verschachtelte Objekt darstellen. Dazu gehören alle verschachtelten Felder innerhalb dieses Objekts, sodass Sie bei Bedarf später darauf zugreifen können.
Dieser Ansatz ist nützlich, wenn Sie das Parsen bestimmter Teile des JSON verschieben möchten, um Rechenressourcen zu sparen. Es bietet außerdem eine größere Flexibilität bei der Handhabung verschachtelter Objekte, ohne dass für jedes Objekt benutzerdefinierte Typen definiert werden müssen.
Das obige ist der detaillierte Inhalt vonWie dekodiere ich verschachtelte JSON-Objekte in Go in Rohdaten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!