Dévoilement des mystères des valeurs vides et des champs non spécifiés dans Go Unmarshalling
Dans Go, lors de la désorganisation de JSON en structures, il peut être difficile de faire la distinction entre les valeurs vides et les valeurs de champ non spécifiées. Cela peut conduire à un comportement ambigu du programme. Voici comment résoudre cette énigme :
Différenciation des valeurs vides et non spécifiées
Les valeurs vides se produisent lorsqu'un champ JSON est présent mais a une valeur vide (par exemple, une chaîne vide ), tandis que des valeurs non spécifiées se produisent lorsqu'un champ est complètement omis du JSON. Pour les distinguer, modifiez le type de champ pour utiliser un pointeur :
type Category struct { Name string Description *string }
Maintenant, si le champ JSON contient une chaîne vide, il sera défini sur un pointeur pointant vers une chaîne vide. Cependant, si le champ n'est pas présent, il restera nul.
Exemple d'utilisation
Considérez le JSON suivant :
[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]
Avec le type de champ modifié, le résultat sera :
[{Name:A Description:0x1050c150}, {Name:B Description:<nil>}, {Name:C Description:0x1050c158}]
Cela vous permet de différencier le champ Description non spécifié dans la catégorie B et le champ Description vide dans la catégorie C. Vous pouvez désormais les gérer séparément au sein de votre programme.
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!