Unmarshalling verschachtelter JSON-Objekte als Strings oder Byte-Arrays
JSON-Unmarshalling kann angepasst werden, um verschachtelte Objekte auf bestimmte Weise zu behandeln. In der Frage besteht das Ziel darin, ein JSON-Objekt zu analysieren, ein verschachteltes Objekt als Zeichenfolge oder Byte-Array beizubehalten und eine automatische Feldzuweisung zu vermeiden.
Um dies zu erreichen, stellt das Paket „encoding/json“ die json.RawMessage bereit Typ. Wie in der Dokumentation beschrieben, ist json.RawMessage ein rohcodiertes JSON-Objekt, das zur Verzögerung oder Vorabberechnung der JSON-Dekodierung verwendet werden kann.
So verwenden Sie json.RawMessage, um verschachtelte Objekte in der bereitgestellten JSON-Zeichenfolge zu verarbeiten:
package main import ( "encoding/json" "fmt" ) type Bar struct { ID int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { var bar Bar err := json.Unmarshal([]byte(`{ "id": 15, "foo": { "foo": 123, "bar": "baz" } }`), &bar) if err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
In diesem Fall enthält das foo-Feld der Bar-Struktur die rohen JSON-Bytes, die die Verschachtelung darstellen Objekt, anstatt es in eine Go-Struktur analysieren zu lassen. Die Ausgabe sieht folgendermaßen aus:
{ID:15 Foo:[123 32 34 102 111 111 34 58 32 49 50 51 44 32 34 98 97 114 34 58 32 34 98 97 122 34 32 125]}
Durch die Verwendung von json.RawMessage können Sie steuern, wie verschachtelte JSON-Objekte beim Unmarshalling behandelt werden, was für mehr Flexibilität in Ihren Datenverarbeitungspipelines sorgt.
Das obige ist der detaillierte Inhalt vonWie kann ich verschachtelte JSON-Objekte als Strings oder Byte-Arrays in Go entmarshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!