Heim >Backend-Entwicklung >Golang >Wie dekodiere ich verschachtelte JSON-Objekte in Go in Rohdaten?

Wie dekodiere ich verschachtelte JSON-Objekte in Go in Rohdaten?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-06 16:48:15213Durchsuche

How to Decode Nested JSON Objects into Raw Data in Go?

JSON-Dekodierung verschachtelter Objekte in Rohdaten

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!

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