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
DDDoriginal
2024-12-12 12:43:13516parcourir

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!

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