Maison >développement back-end >Golang >Comment puis-je faire la distinction entre les champs JSON vides et manquants lors du déclassement dans Go ?

Comment puis-je faire la distinction entre les champs JSON vides et manquants lors du déclassement dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-04 06:05:16248parcourir

How Can I Distinguish Between Empty and Missing JSON Fields When Unmarshalling in Go?

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!

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