Heim >Backend-Entwicklung >Golang >Wie kann ich JSON-Daten teilweise in einer Go-Map bereitstellen?

Wie kann ich JSON-Daten teilweise in einer Go-Map bereitstellen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 15:51:11542Durchsuche

How to Partially Unmarshal JSON Data into a Go Map?

So teilweises Unmarshalling von JSON in einer Karte in Go

Das Unmarshalling von JSON-Daten in Go kann unkompliziert sein, beim Umgang mit verschachtelten Daten treten jedoch Herausforderungen auf Objekte, deren Schlüssel den Typ der Daten angeben. Um dieses Problem zu beheben, können Sie das Paket „encoding/json“ nutzen.

Im bereitgestellten Code versuchen Sie, JSON-Daten einem Map[string][]byte zuzuordnen und sie so effektiv in einen Schlüssel umzuwandeln -Wert-Paar aus Zeichenfolgen und rohem JSON. Die Funktion json.MapObject existiert jedoch nicht, sodass diese Lösung nicht realisierbar ist.

Stattdessen können Sie eine Map[string]json.RawMessage verwenden, um Ihr Ziel zu erreichen. RawMessage ist ein undurchsichtiger Typ, der nicht geparstes JSON enthält. Mit diesem Ansatz entmarspelt der folgende Code die bereitgestellten JSON-Daten in die objmap-Variable:

var objmap map[string]json.RawMessage
err := json.Unmarshal(data, &objmap)

Jetzt können Sie auf die einzelnen Schlüssel-Wert-Paare innerhalb der objmap zugreifen, um die JSON-Daten weiter zu analysieren. Um beispielsweise den Wert „sendMsg“ zu analysieren:

var s sendMsg
err = json.Unmarshal(objmap["sendMsg"], &s)

Ebenso können Sie den Wert „say“ als Zeichenfolge analysieren:

var str string
err = json.Unmarshal(objmap["say"], &str)

Hinweis: Denken Sie daran, die Variablen in Ihrer sendMsg-Struktur zu exportieren, um ein ordnungsgemäßes Unmarshalling zu ermöglichen. Zum Beispiel:

type sendMsg struct {
    User string
    Msg  string
}

Ein funktionierendes Beispiel finden Sie unter https://play.golang.org/p/OrIjvqIsi4-.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Daten teilweise in einer Go-Map bereitstellen?. 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