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
Libérer: 2024-12-04 06:05:16
original
301 Les gens l'ont consulté

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
}
Copier après la connexion

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": ""}
]
Copier après la connexion

Avec le type de champ modifié, le résultat sera :

[{Name:A Description:0x1050c150}, {Name:B Description:<nil>}, {Name:C Description:0x1050c158}]
Copier après la connexion

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!

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