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
Freigeben: 2024-11-26 10:06:10
Original
830 Leute haben es durchsucht

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]}
Nach dem Login kopieren

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

type UntypedJson map[string][]interface{}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage