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!