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
Libérer: 2024-12-07 07:07:19
original
921 Les gens l'ont consulté

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"}
]
Copier après la connexion

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
}
Copier après la connexion

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
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal