Wie kann ich dynamische JSON-Feldtypen in Go verarbeiten?

Barbara Streisand
Freigeben: 2024-11-19 03:16:02
Original
389 Leute haben es durchsucht

How Can I Handle Dynamic JSON Field Types in Go?

Umgang mit dynamischen JSON-Feldtypen in Go

Das Deserialisieren von JSON in strukturierte Daten in Go kann eine Herausforderung sein, wenn sich der Typ eines Schlüsselwerts ständig ändert . Beispielsweise kann eine API Daten in verschiedenen Formaten bereitstellen, wie zum Beispiel:

{
  "mykey": [
    {obj1},
    {obj2}
  ]
}
Nach dem Login kopieren
{
  "mykey": [
    "/obj1/is/at/this/path",
    "/obj2/is/at/this/other/path"
  ]
}
Nach dem Login kopieren

Go's Approach

Um solch dynamisches JSON zu verarbeiten, sollten Sie die Verwendung von a in Betracht ziehen flexible Datenstruktur wie die folgende:

type Data struct {
    MyKey []interface{} `json:"mykey"`
}
Nach dem Login kopieren

Diese Struktur ermöglicht die Speicherung sowohl von Zeichenfolgen als auch von Objekten im MyKey-Slice.

Unterscheidende Typen

Sobald das JSON deserialisiert ist, können Sie mithilfe eines Typschalters zwischen Zeichenfolgen und Objekten unterscheiden:

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)
    }
}
Nach dem Login kopieren

Mit diesem Ansatz können Sie den Typ jedes Elements im MyKey-Slice bestimmen und entsprechend verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich dynamische JSON-Feldtypen in Go verarbeiten?. 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