Maison  >  Article  >  développement back-end  >  Comment désorganiser les champs JSON lorsqu'il s'agit de chaînes au lieu d'entiers ?

Comment désorganiser les champs JSON lorsqu'il s'agit de chaînes au lieu d'entiers ?

DDD
DDDoriginal
2024-11-12 17:33:02897parcourir

How to Unmarshal JSON Fields When They Are Strings Instead of Integers?

Comment gérer les erreurs Unmarshal lorsque les champs JSON sont des chaînes au lieu d'entiers

Lorsque vous traitez des données JSON, vous pouvez rencontrer des situations où un champ JSON est représenté sous forme de chaîne au lieu d'un entier, provoquant l'échec de JSON Unmarshal. Ce problème survient lorsque JavaScript, qui ne gère pas bien les valeurs int64, encode les données JSON.

Considérez la structure suivante :

type tySurvey struct {
    Id     int64       `json:"id,omitempty"`
    Name   string      `json:"name,omitempty"`
}

Lorsque vous marshalez cette structure en JSON à l'aide du Marshal standard fonction puis modifiez le champ de nom avec jQuery avant de le renvoyer à votre gestionnaire Go, le champ id peut être codé sous forme de chaîne. Cela entraîne une erreur lors de la tentative de désorganisation du JSON dans une structure tySurvey :

json: cannot unmarshal string into Go value of type int64

Pour résoudre ce problème, vous pouvez spécifier que le champ id peut être désorganisé d'une chaîne en ajoutant ,string au JSON. tag :

type tySurvey struct {
    Id   int64       `json:"id,string,omitempty"` // Add ",string" to handle string values
    Name   string      `json:"name,omitempty"`
}

Cela permet au JSON Unmarshal de convertir avec succès la représentation sous forme de chaîne du champ d'identification en un entier.

Notez que la définition d'omitempty sur un champ avec ,string n'est pas recommandée, car la chaîne vide ne peut pas être transformée en un entier.

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