Les programmeurs Go rencontrent souvent le message d'erreur "json : impossible de démarshaler une chaîne dans une valeur Go de type int64" lorsqu'ils tentent de démarshaler JSON. données. Cette erreur se produit lorsque le champ JSON correspondant à un champ de structure Go de type int64 contient une valeur de chaîne.
Considérez la structure Go suivante :
type Survey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Si vous marshalez cette structure en JSON et modifiez le champ "id" dans un client JavaScript, il peut envoyer une chaîne JSON comme celle-ci :
{"id": "1"}
où le champ "id" est maintenant une chaîne.
Lorsque vous essayez de désorganiser cette chaîne JSON dans la structure Go, vous rencontrerez l'erreur susmentionnée.
Pour gérer cette situation, vous pouvez spécifier l'option ,string dans votre balise JSON, comme indiqué ci-dessous :
type Survey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
Cela permet au champ "id" d'être désorganisé en tant que int64 même si la valeur JSON est une chaîne.
Il est important de noter que spécifier omitEmpty pour les champs marqués par une chaîne n'affecte que le processus de marshaling, pas le processus de démarshaling. Cela signifie que vous ne pouvez pas désorganiser une chaîne vide dans un champ int64, même si elle est étiquetée avec ,string,omitempty.
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!