Maison >développement back-end >Golang >Comment analyser des tableaux JSON avec des clés dynamiques dans des structures de données Go ?

Comment analyser des tableaux JSON avec des clés dynamiques dans des structures de données Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-07 07:07:19961parcourir

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

Analyse des tableaux JSON dans des structures de données Go

Dans Golang, l'analyse des données JSON dans des structures de données personnalisées peut être simple. Prenons un scénario dans lequel un fichier JSON contient un tableau d'objets avec des clés dynamiques :

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

Tenter d'analyser ce JSON dans une chaîne map[string] peut entraîner une erreur :

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
}

Pour résoudre ce problème et analyser le tableau JSON, un type personnalisé mytype est défini comme un tableau de cartes :

type mytype []map[string]string

En définissant la structure de données comme une tranche de cartes, le tableau JSON peut être analysé en conséquence :

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

Cette approche permet d'analyser des tableaux JSON avec des clés dynamiques dans une structure de données Go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn