mit dynamischem json fieldtypen in go
Wenn Unmarshaling json in eine Struktur in eine Struktur begegnet, kann man Inkonsistenzen in der Wertetyp eines bestimmten Schlüssels über API -Anfragen begegnen. Diese Herausforderung entsteht, wenn der Server verschiedene Objektstrukturen oder String -Referenzen für denselben Schlüssel sendet. Dies kann ein Problem darstellen, da GO eine feste Struktur für Unmarshaling erfordert.
, um dieses Problem anzugehen 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 Stringwerten auftritt, wie:
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
Die MyKey -Slice -Elemente werden als Zeichenfolgen dekodiert. Für Objekte werden sie als MAP [String] Interface {} -Werte dekodiert. Diese Unterscheidung kann mit einem Typ -Switch durchgeführt 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) } }
Wenn Sie den JSON in einen Schnittstellentyp unterzogen und Typ -Switches verwenden, können GO -Entwickler dynamische Feldtypen verarbeiten und die Daten angemessen analysieren, unabhängig von der vom Server bereitgestellten Struktur.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3