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!