Wie dekodiere ich JSON-Arrays mit gemischten Datentypen in Go?

Linda Hamilton
Freigeben: 2024-11-23 04:33:16
Original
857 Leute haben es durchsucht

How to Decode JSON Arrays with Mixed Data Types in Go?

JSON-Arrays mit gemischten Werttypen dekodieren

In einigen Fällen können Sie auf JSON-Arrays stoßen, die Elemente verschiedener Typen enthalten. Zum Beispiel:

{["NewYork",123]}
Nach dem Login kopieren

Go-Arrays erfordern die explizite Angabe ihres Typs, was beim Umgang mit Arrays gemischter Typen eine Herausforderung darstellen kann.

Lösung mit Schnittstelle{}

Um Arrays gemischter Typen zu verarbeiten, können Sie den Typ interface{} nutzen, der Werte jeden Typs zulässt. So können Sie dies in Go erreichen:

package main

import (
    "encoding/json"
    "fmt"
)

type UntypedJson map[string][]interface{}

func main() {
    j := `{"NYC": ["NewYork",123]}`
    ut := UntypedJson{}
    err := json.Unmarshal([]byte(j), &ut)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%#v", ut)
}
Nach dem Login kopieren
  • Zuerst definieren wir einen benutzerdefinierten Typ UntypedJson, der Strings Arrays von interface{} zuordnet. Dadurch können wir Werte jeden Typs im Array speichern.
  • Wir verwenden json.Unmarshal, um den JSON-String in unseren UtnyptedJson-Typ zu dekodieren. Da interface{} jeden Typ enthalten kann, kann es sowohl String- als auch Integer-Elemente im Array verarbeiten.
  • Schließlich verwenden wir fmt.Printf, um die nicht gemarshallten Daten anzuzeigen.

Hinweis: Es ist zu beachten, dass das bereitgestellte JSON-Beispiel technisch ungültig ist, da JSON-Objekte Schlüssel haben müssen. Ein korrigiertes Beispiel wäre:

{"NYC": ["NewYork",123]}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie dekodiere ich JSON-Arrays mit gemischten Datentypen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage