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!