Maison > développement back-end > Golang > Comment désorganiser des tableaux JSON de taille inconnue dans Go ?

Comment désorganiser des tableaux JSON de taille inconnue dans Go ?

DDD
Libérer: 2024-12-12 12:43:13
original
514 Les gens l'ont consulté

How to Unmarshal JSON Arrays of Unknown Size in Go?

Désorganisation de JSON avec des tableaux de taille inconnue

Lors de la récupération de données via JSON, il est souvent constaté que le JSON renvoyé peut ou non avoir un tableau. Par exemple, lorsque vous demandez une liste de compteurs intelligents, elle peut être reçue sous la forme d'un seul élément sous « gwrcmd ». Cependant, lors d'une demande de consommation d'électricité, elle peut être renvoyée sous la forme d'un tableau de "gwrcmds".

Cette ambiguïté présente un défi de regroupement car les structures Go nécessitent des définitions explicites pour les tableaux et les éléments uniques. Pour résoudre ce problème, json.Unmarshal peut être utilisé pour renvoyer soit une seule struct { }, soit un tableau []struct { } basé sur la structure JSON.

Cependant, json.Unmarshal peut rencontrer une erreur si le résultat attendu le type est en conflit avec la structure JSON. Pour résoudre ce problème, une deuxième structure peut être créée qui duplique la première, à l'exception de l'utilisation d'une tranche pour « Gwrcmd ». Alternativement, une approche plus robuste consiste à utiliser json.RawMessage pour capturer la valeur JSON de type inconnu et effectuer une désorganisation supplémentaire en fonction de son contenu. Cela évite les conjectures liées à la détermination du type de tableau en fonction uniquement du premier octet.

Des exemples des deux approches sont illustrés dans les extraits de code Go fournis. De plus, des ressources pertinentes sont répertoriées pour une exploration plus approfondie.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal