Heim >Backend-Entwicklung >Golang >Wie analysiert man JSON-Arrays mit dynamischen Schlüsseln in Go-Datenstrukturen?

Wie analysiert man JSON-Arrays mit dynamischen Schlüsseln in Go-Datenstrukturen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-07 07:07:191015Durchsuche

How to Parse JSON Arrays with Dynamic Keys into Go Data Structures?

JSON-Arrays in Go-Datenstrukturen analysieren

In Golang kann das Parsen von JSON-Daten in benutzerdefinierte Datenstrukturen unkompliziert sein. Stellen Sie sich ein Szenario vor, in dem eine JSON-Datei ein Array von Objekten mit dynamischen Schlüsseln enthält:

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]

Der Versuch, diesen JSON in einen Map[string]string zu analysieren, kann zu einem Fehler führen:

import (
    "encoding/json"
    "io/ioutil"
    "log"
)

type data map[string]string

func main() {
    c, _ := ioutil.ReadFile("test.json")
    dec := json.NewDecoder(bytes.NewReader(c))
    var d data
    dec.Decode(&d) // error: cannot unmarshal array into Go value of type data
}

Um dieses Problem zu beheben und das JSON-Array zu analysieren, wird ein benutzerdefinierter Typ mytype als Array von Karten definiert:

type mytype []map[string]string

Durch Definieren Da die Datenstruktur ein Kartenausschnitt ist, kann das JSON-Array entsprechend analysiert werden:

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    var data mytype
    file, err := ioutil.ReadFile("test.json")
    if err != nil {
        log.Fatal(err)
    }
    err = json.Unmarshal(file, &data)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(data)
}

Dieser Ansatz ermöglicht das Parsen von JSON-Arrays mit dynamischen Schlüsseln in eine Go-Datenstruktur.

Das obige ist der detaillierte Inhalt vonWie analysiert man JSON-Arrays mit dynamischen Schlüsseln in Go-Datenstrukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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