Maison > développement back-end > Golang > Comment gérer l'entrée de chaîne pour les champs Int64 dans JSON Unmarshaling ?

Comment gérer l'entrée de chaîne pour les champs Int64 dans JSON Unmarshaling ?

Susan Sarandon
Libérer: 2024-11-15 03:17:02
original
277 Les gens l'ont consulté

How to Handle String Input for Int64 Fields in JSON Unmarshaling?

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

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

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!

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