Heim >Backend-Entwicklung >Golang >Wie kann ich JSON-Arrays mit gemischten Datentypen in Go dekodieren?

Wie kann ich JSON-Arrays mit gemischten Datentypen in Go dekodieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-26 10:06:10863Durchsuche

How Can I Decode JSON Arrays with Mixed Data Types in Go?

Arrays mit gemischten Typen in JSON dekodieren

Beim Umgang mit JSON-Arrays, die Werte verschiedener Typen enthalten, ist es wichtig zu überlegen, wie das Unmarshalling durchgeführt wird sie effektiv in ein Go-Programm integrieren. Go-Arrays erfordern einen explizit definierten Typ, was eine Herausforderung beim Umgang mit unterschiedlichen Werttypen darstellt.

Lösung: Verwendung der Schnittstelle{}

Die Lösung liegt in der Verwendung der Schnittstelle{} , ein spezieller Typ in Go, der Werte jeden Typs enthalten kann. Durch die Verwendung eines Interface{}-Arrays ermöglichen wir die Flexibilität, Werte verschiedener Typen innerhalb desselben Arrays zu speichern.

Beispielimplementierung

Betrachten Sie das folgende JSON-Beispiel:

{"key": ["NewYork", 123]}

Um diesen JSON mithilfe der Schnittstelle{} zu entmarshalieren, können wir benutzerdefinierte Daten definieren Struktur:

type UntypedJson map[string][]interface{}

Dieser Typ stellt eine Zuordnung von Strings zu Arrays der Schnittstelle{} dar und ermöglicht die Speicherung von Werten jeglichen Typs.

Unmarshaling des JSON

Um den JSON zu entmarshalieren, können wir json.Unmarshal verwenden Funktion:

var ut UntypedJson
json.Unmarshal([]byte(jsonString), &ut)

Die ut-Variable enthält nun die nicht gemarshallten Daten als UntypedJson-Typ. Die Kartenschlüssel entsprechen den JSON-Objektschlüsseln und die Array-Werte enthalten Werte verschiedener Typen.

Beispielspielplatz

Ein vollständiges Beispiel mit einem eingebetteten Go-Spielplatz finden Sie hier:

const j = `{"NYC": ["NewYork",123]}`

type UntypedJson map[string][]interface{}

func main() {
    ut := UntypedJson{}
    fmt.Println(json.Unmarshal([]byte(j), &ut))
    fmt.Printf("%#v", ut)
}

Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Arrays mit gemischten Datentypen in Go dekodieren?. 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