Maison > développement back-end > Golang > le corps du texte

Comment analyser des tableaux JSON dans des structures Go ?

Susan Sarandon
Libérer: 2024-11-26 18:01:15
original
854 Les gens l'ont consulté

How to Parse JSON Arrays into Go Structs?

Comment traiter les tableaux JSON dans Go

La requête présente un défi dans l'analyse des tableaux JSON dans Go. Un tableau JSON est une collection d'objets, et dans l'exemple donné, les données renvoyées par un appel API sont un tableau d'objets complexes.

Pour analyser ce tableau, nous devons définir une structure Go qui reflète le structure des objets du tableau. Commençons par définir la structure PublicKey :

type PublicKey struct {
    name string
    price string
}
Copier après la connexion

Ensuite, nous devons définir une structure KeysResponse pour représenter l'ensemble des objets PublicKey :

type KeysResponse struct {
    Collection []PublicKey
}
Copier après la connexion

Nous décomposons ensuite le JSON en une variable de type KeysResponse :

keys := make([]PublicKey, 0)
err := json.Unmarshal([]byte(s), &keys)
if err == nil {
    fmt.Printf("%+v\n", keys)
} else {
    fmt.Println(err)
    fmt.Printf("%+v\n", keys)
}
Copier après la connexion

Le La fonction json.Unmarshal remplira automatiquement la variable clés avec les données analysées du JSON. Cependant, le code de la question d'origine contenait un détail négligé : les champs de la structure PublicKey doivent être exportés (commencez par une lettre majuscule).

Après avoir effectué cette modification, le code analysera correctement le tableau JSON et affichera les résultats dans le format souhaité :

[{Name:Galaxy Nexus Price:3460.00} {Name:Galaxy Nexus Price:3460.00}]
Copier après la connexion

Notez que le texte JSON de la question contient des noms de champs avec des lettres minuscules, mais le package json est suffisamment intelligent pour les faire correspondre avec le champs exportés de la structure PublicKey.

Pour une structure JSON plus complexe, il est recommandé d'utiliser des balises struct pour mapper explicitement les noms de champs JSON aux champs struct. De plus, le démarshaling dans une tranche de cartes ([]map[string]interface{}) fournit une approche alternative mais nécessite une indexation manuelle et des assertions de type.

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