Maison >développement back-end >Golang >Comment puis-je gérer efficacement les réponses JSON dynamiques avec des clés imprévisibles dans Go ?

Comment puis-je gérer efficacement les réponses JSON dynamiques avec des clés imprévisibles dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 01:37:11345parcourir

How Can I Efficiently Handle Dynamic JSON Responses with Unpredictable Keys in Go?

Mappage JSON dynamique dans Go à l'aide de Maps

Dans Go, mapper des réponses JSON dynamiques avec des clés imprévisibles peut être un défi. Cependant, l'utilisation de cartes offre une solution flexible.

Considérez la réponse JSON suivante, où les clés varient :

{
"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
}]
}
}
]
}

Pour capturer cette nature dynamique, créez une structure basée sur une carte. Les cartes dans Go autorisent des clés et des valeurs arbitraires, ce qui les rend idéales pour ce scénario.

type Items map[string][]ImageURL

Ici, la structure Items est une carte avec des clés de chaîne (représentant les différentes clés JSON) et des valeurs de type [] ImageURL.

Pour utiliser cette structure, définissez une structure ImageURL pour les entrées d'image individuelles :

type ImageURL struct {
    URL    string
    Width  int
    Height int
}

Maintenant, vous pouvez désassemblez la réponse JSON directement dans une structure Items :

err := json.Unmarshal(data, &items)
if err != nil {
    // Handle error
}

Cette approche fournit un mappage flexible pour les réponses JSON dynamiques, vous permettant de capturer les données sans avoir besoin de prédéfinir toutes les clés possibles.

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