Gestion de l'entrée de chaîne pour les champs Int64 dans le démarchage JSON
Le démarshalage des données JSON en valeurs Go peut parfois rencontrer des défis, en particulier lorsque vous rencontrez des représentations sous forme de chaîne de valeurs intégrales. Cet article explore une solution à l'erreur « json : impossible de désorganiser la chaîne dans une valeur Go de type int64 » lors de la désorganisation de données JSON avec des champs intégraux codés en chaîne.
Énoncé du problème
Considérez la structure Go suivante représentant une réponse à une enquête :
type tySurvey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Dans cet exemple, le Le champ id est défini comme int64. Après avoir sérialisé tySurvey en JSON et l'avoir transmis pour manipulation côté client, le client met à jour le champ de nom. Cependant, il code par inadvertance le champ id sous forme de chaîne lors de la transmission des données.
Lors de la réception des données JSON modifiées sur le serveur, la structure tySurvey d'origine n'est pas marshalée, ce qui entraîne une erreur : "json : impossible de désorganiser la chaîne dans Aller à la valeur du type int64."
Solution
La solution réside dans la modification des balises de champ JSON en ajoutant ,string à la définition du type. Cela demande au démarshaler JSON d'accepter les représentations sous forme de chaîne pour les valeurs intégrales :
type tySurvey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
L'option ,string permet une conversion transparente des valeurs intégrales codées sous forme de chaîne en valeurs Go correspondantes lors du démarshalage.
Considérations supplémentaires
Lors de la spécification de l'omitempty pour les valeurs intégrales codées en chaîne, il est crucial de noter que la chaîne vide ne peut pas être décodée. Cette limitation garantit que l'omitempty n'est utilisée que pendant l'encodage.
Conclusion
L'ajout d'une chaîne aux balises de champ JSON permet une désagrégation sans effort des valeurs intégrales codées en chaîne dans Go. Cette technique simplifie la gestion des données et améliore la robustesse du code en prenant en compte les manipulations de données côté client qui peuvent modifier par inadvertance les types de champs.
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!