Maison >développement back-end >Golang >Comment décomposer les chaînes JSON en valeurs Int64 Go ?

Comment décomposer les chaînes JSON en valeurs Int64 Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-14 17:16:02561parcourir

How to Unmarshal JSON Strings into Int64 Go Values?

Démarshaling des chaînes JSON dans des valeurs Go Int64

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.

Aperçu du problème

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.

Solution

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.

Remarque

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!

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