Maison >développement back-end >Golang >Comment puis-je faire la différence entre les champs vides et manquants lors de la désorganisation de JSON dans Go ?

Comment puis-je faire la différence entre les champs vides et manquants lors de la désorganisation de JSON dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-14 19:55:12450parcourir

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

Distinguer les valeurs vides des champs non spécifiés dans Go Unmarshaling

La distinction des données JSON dans Golang peut être simple, mais faire la différence entre les valeurs vides et les champs non spécifiés les valeurs peuvent être un défi. Cet article aborde ce problème en proposant une solution pour faire la distinction entre les deux.

Dans l'exemple fourni, nous avons une tranche de structures Category, où chaque catégorie a un champ Nom et Description. Lors du désagrégation des données JSON dans cette tranche, nous rencontrons un scénario dans lequel les catégories B et C ont des champs de description vides. Cependant, nous voulons savoir s'il existe un moyen de discerner si la description de la catégorie B est spécifiée comme une chaîne vide ou simplement non présente dans les données JSON.

La clé est de déclarer le champ Description comme pointeur vers un string :

type Category struct {
    Name        string
    Description *string
}

En utilisant un pointeur, si un champ JSON est présent avec une valeur de chaîne vide, il sera défini sur un pointeur pointant vers une chaîne vide (*""). À l'inverse, si le champ n'est pas présent dans JSON, le pointeur restera nul ().

La sortie mise à jour illustre cette différenciation :

[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]

Ici, les catégories A La description n'est pas vide, la description de la catégorie B est nulle (indiquant un champ non spécifié) et la description de la catégorie C est une chaîne vide (indiquant un champ non spécifié). une valeur vide spécifiée).

Cette technique vous permet de faire la distinction entre les valeurs vides (nil) et les champs non spécifiés (pointeurs nuls), vous permettant d'adapter le comportement de votre programme en conséquence.

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