Heim >Backend-Entwicklung >Golang >Wie analysiere ich ein JSON-Array dynamischer Schlüssel-Wert-Paare in Go?

Wie analysiere ich ein JSON-Array dynamischer Schlüssel-Wert-Paare in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-16 20:36:12842Durchsuche

How to Parse a JSON Array of Dynamic Key-Value Pairs in Go?

Parsen eines JSON-Arrays in eine Datenstruktur in Go

Bei der Arbeit mit JSON-Daten in Go ist es wichtig, die entsprechenden Datenstrukturen zu verstehen für verschiedene JSON-Formate. In diesem Fall haben wir es mit einem JSON-Array dynamischer Schlüssel-Wert-Paare zu tun.

Problem:

Sie versuchen, eine JSON-Datei zu analysieren, die ein Array von enthält JSON-Objekte. Die Verwendung eines einfachen Map[String]Strings zur Darstellung der Daten führt jedoch zu einem Fehler:

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]
type data map[string]string

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

Lösung:

So analysieren Sie den JSON korrekt Für ein Array müssen Sie eine Datenstruktur definieren, die das Array von Objekten darstellt. Dies kann mithilfe eines benutzerdefinierten Typs erreicht werden, der einen Teil der Karten einbettet.

type mytype []map[string]string

Code:

package main

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

type mytype []map[string]string

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)
}

Beispiel:

Für die bereitgestellte JSON-Datei:

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

Die Ausgabe des Codes würde sein:

[{map[a:1]} {map[b:2]} {map[c:3]}]

Das obige ist der detaillierte Inhalt vonWie analysiere ich ein JSON-Array dynamischer Schlüssel-Wert-Paare in Go?. 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