Umgang mit dynamischen JSON-Feldtypen in Go
Beim Unmarshaling von JSON in Go in eine Struktur kann es zu Inkonsistenzen im Werttyp von a kommen spezifischer Schlüssel für alle API-Anfragen. Diese Herausforderung entsteht, wenn der Server unterschiedliche Objektstrukturen oder String-Referenzen für denselben Schlüssel sendet. Dies kann ein Problem darstellen, da Go eine feste Struktur für das Unmarshaling benötigt.
Um dieses Problem zu lösen, kann ein typdynamischer Ansatz unter Verwendung eines Schnittstellentyps verwendet werden. Betrachten Sie die folgenden JSON-Daten:
{ "mykey": [ {obj1}, {obj2} ] }
Um diese dynamische Natur zu erfassen, können wir eine Struktur wie folgt definieren:
type Data struct { MyKey []interface{} `json:"mykey"` }
Wenn JSON mit Zeichenfolgenwerten angetroffen wird, wie zum Beispiel:
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
Die MyKey-Slice-Elemente werden als Strings dekodiert. Bei Objekten werden sie als Map[string]interface{}-Werte dekodiert. Diese Unterscheidung kann mithilfe eines Typschalters vorgenommen werden:
for i, v := range data.MyKey { switch x := v.(type) { case string: fmt.Println("Got a string: ", x) case map[string]interface{}: fmt.Printf("Got an object: %#v\n", x) } }
Durch das Unmarshaling des JSON in einen Schnittstellentyp und die Verwendung von Typschaltern können Go-Entwickler dynamische Feldtypen verarbeiten und die Daten unabhängig von der bereitgestellten Struktur entsprechend analysieren vom Server.
Das obige ist der detaillierte Inhalt vonWie kann Go beim Unmarshaling mit dynamischen JSON-Feldtypen umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!