Unmarshaling von JSON-Arrays mit gemischten Werttypen
Das Unmarshaling eines JSON-Arrays mit Werten unterschiedlicher Typen kann in Go aufgrund der Anforderung eine Herausforderung darstellen zur expliziten Typdefinition in Go-Arrays.
Case Studie:
Betrachten Sie das folgende ungültige JSON-Beispiel:
["NewYork", 123]
Ein Versuch, dieses Array in ein Go-Array zu dekodieren, würde fehlschlagen, da das Go-Array einen festen Typ erfordert in diesem Fall unbekannt.
Lösung:
Um diese Einschränkung zu überwinden, bietet Go die interface{}-Typ, der die Speicherung von Werten jeglichen Typs ermöglicht. Durch die Verwendung von interface{} wird es möglich, JSON-Arrays mit gemischten Werttypen zu entmarshalieren, wie unten gezeigt:
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) }
In diesem Beispiel definieren wir einen benutzerdefinierten Typ UntypedJson als Zuordnung von Zeichenfolgenschlüsseln zu Slices von Schnittstelle{}. Das JSON-Array wird dann in der UntypedJson-Instanz entmarshaled. Die fmt.Printf-Anweisung zeigt die nicht gemarshallten Daten an, die die gemischten Werte aus dem JSON-Array enthalten.
Durch die Verwendung des Typs interface{} wird es möglich, JSON-Arrays mit Werten unterschiedlicher Typen zu entmarshalieren und so mehr zu bieten flexible und vielseitige Lösung für komplexe Datenszenarien.
Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Arrays mit gemischten Datentypen in Go entmarshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!