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!