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 }
Ensuite, nous devons définir une structure KeysResponse pour représenter l'ensemble des objets PublicKey :
type KeysResponse struct { Collection []PublicKey }
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) }
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}]
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!