Heim >Backend-Entwicklung >Golang >Wie kann ich verschachtelte JSON-Objekte in Go als Strings oder Byte-Slices entmarshalieren?

Wie kann ich verschachtelte JSON-Objekte in Go als Strings oder Byte-Slices entmarshalieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-17 02:18:25544Durchsuche

How Can I Unmarshal Nested JSON Objects as Strings or Byte Slices in Go?

Unmarshalling verschachtelter JSON-Objekte als Strings oder Byte-Slices

In JSON-Daten stellen verschachtelte Objekte zusätzliche Informationsebenen bereit. Wenn Sie diese Daten jedoch in Go-Strukturen entmarshallen, möchten Sie diese Objekte möglicherweise als Rohdaten und nicht als analysierte Werte behandeln.

Um dies zu erreichen, bietet das Paket „encoding/json“ eine Lösung: json.RawMessage.

Verwenden von RawMessage, um verschachtelte Objekte als Raw zu behandeln Data

json.RawMessage ist ein Typ, der codierte JSON-Daten darstellt. Damit können Sie die JSON-Dekodierung verzögern oder eine JSON-Kodierung vorab berechnen.

Dies ist besonders nützlich, wenn Sie verschachtelte Objekte als Zeichenfolgen oder Byte-Slices verarbeiten möchten. So können Sie es verwenden:

import (
    "encoding/json"
    "fmt"
)

type Bar struct {
    Id  int64           `json:"id"`
    Foo json.RawMessage `json:"foo"`
}

func main() {
    // Example JSON with a nested object
    jsonStr := []byte(`{
        "id"  : 15,
        "foo" : { "foo": 123, "bar": "baz" }
    }`)

    var bar Bar

    err := json.Unmarshal(jsonStr, &bar)
    if err != nil {
        panic(err)
    }

    fmt.Printf("%+v\n", bar)
}

Beispielausgabe

{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 das verschachtelte Objekt als Rohzeichenfolge oder behandeln Byte-Slice. Dies ermöglicht Ihnen, die Daten weiter zu verarbeiten oder für eine spätere Verwendung zu speichern.

Das obige ist der detaillierte Inhalt vonWie kann ich verschachtelte JSON-Objekte in Go als Strings oder Byte-Slices entmarshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn