Entschlüsselung von JSON-Arrays mit unterschiedlichen Werttypen
Im Bereich der Datenserialisierung und -deserialisierung besteht die Notwendigkeit, JSON-Arrays zu verarbeiten, die eine Mischung aus Werttypen sind eine häufige Begegnung. Stellen Sie sich ein Szenario vor, in dem Sie ein Array wie ["NewYork", 123] haben. Dies stellt ein Dilemma dar, da Go-Arrays explizite Typdefinitionen erfordern, was uns unsicher macht, wie wir diese Ungleichheit ausgleichen können.
Das Rätsel angehen
Um dieses Dilemma zu umgehen, ist der erste Schritt dient dazu, die Gültigkeit des JSON-Arrays sicherzustellen. JSON-Objekte erfordern Schlüssel für jeden Wert, daher wäre eine passendere Darstellung {"key":["NewYork",123]} oder einfach ["NewYork",123].
Wenn Sie auf heterogene Datentypen in stoßen Wenn Sie ein Array verwenden, liegt die Lösung darin, die Flexibilität des Schnittstellentyps {} von Go zu nutzen. Dies ermöglicht die Speicherung und Weitergabe von Werten unterschiedlicher Art ohne Casting-Einschränkungen.
Betrachten Sie das folgende Beispiel, das zeigt, wie Sie diese Herausforderung effektiv angehen können:
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 Wir definieren einen benutzerdefinierten Typ, UntypedJson, der eine Zuordnung von Strings zu Arrays von interface{} ist. Dadurch können wir das JSON-Array entmarshalieren und gleichzeitig die darin enthaltenen unterschiedlichen Typen beibehalten.
Die json.Unmarshal-Funktion wird dann verwendet, um unsere UntypedJson-Struktur zu füllen, wobei die Ausgabe aus Gründen der Übersichtlichkeit gedruckt und formatiert wird.
Dieser Ansatz ermöglicht Ihnen den einfachen und flexiblen Umgang mit JSON-Arrays mit unterschiedlichen Werttypen. Indem Sie die Leistungsfähigkeit von interface{} nutzen, können Sie die Fallstricke expliziter Typdefinitionen vermeiden und den Umfang der Möglichkeiten Ihrer Go-Anwendungen erweitern.
Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Arrays mit gemischten Datentypen in Go verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!