Gestion des clés JSON arbitraires dans les structures Go
Votre réponse JSON contient différentes clés qui ne peuvent pas être définies de manière statique dans une structure Go. Pour résoudre ce problème, envisagez d'utiliser une structure de données cartographiques qui permet des paires clé-valeur dynamiques.
Utilisation d'une carte pour les clés dynamiques
Le code suivant définit une structure qui utilise une carte pour représenter les paires clé-valeur arbitraires :
type Items map[string][]ImageUrl
Ici, Items est une carte qui mappe les chaînes (les clés dans le JSON) aux tranches de structures ImageUrl. Chaque structure ImageUrl représente une URL d'image unique avec ses dimensions.
Exemple d'utilisation
Cette version modifiée de votre code illustre comment utiliser la structure Items :
type ImageUrl struct { Url string Width, Height int } type Items map[string][]ImageUrl func main() { json := `{"items": [{"name": "thing", "image_urls": { "50x100": [{ "url": "http://site.com/images/1/50x100.jpg", "width": 50, "height": 100 }, { "url": "http://site.com/images/2/50x100.jpg", "width": 50, "height": 100 }], "200x300": [{ "url": "http://site.com/images/1/200x300.jpg", "width": 200, "height": 300 }], "400x520": [{ "url": "http://site.com/images/1/400x520.jpg", "width": 400, "height": 520 }] } } }` var items Items if err := json.Unmarshal([]byte(json), &items); err != nil { // Handle error } fmt.Println(items) // Prints the map containing the keys and values }
Dans cet exemple, la fonction json.Unmarshal remplira automatiquement la carte Items avec les paires clé-valeur appropriées. Vous pouvez ensuite accéder aux données et les manipuler selon vos besoins.
Remarque : Cette approche suppose que les clés imbriquées dans votre JSON sont cohérentes. Si ce n'est pas le cas, vous devrez peut-être utiliser des structures de données plus complexes, telles que des cartes imbriquées ou des tranches de cartes.
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!