J'ai struct
type tySurvey struct {
Id int64 `json:"id,omitempty"`
Name string `json:"name,omitempty"`
}
Je sais json.Marshal
écrire des octets JSON dans une page HTML. jQuery modifie le champ name
dans un objet et code l'objet à l'aide de jQueries JSON.stringify
et la chaîne de messages jQuery est envoyée au gestionnaire Go.
id
champ codé sous forme de chaîne.
Envoyé: {"id":1}
Reçu: {"id":"1"}
Le problème est que json.Unmarshal
ne parvient pas à disséminer ce JSON, car id
n'est plus un entier.
json: cannot unmarshal string into Go value of type int64
Quel est le meilleur moyen de gérer de telles données? Je ne souhaite pas convertir manuellement tous les champs. Je souhaite écrire un code compact et sans bug.
Citations n'est pas trop mauvais. JavaScript ne fonctionne pas bien avec int64.
Je voudrais apprendre le moyen facile d'unmarshal json avec des valeurs de chaîne dans les valeurs int64.
Ceci est géré en ajoutant ,string
à votre tag comme suit:
type tySurvey struct {
Id int64 `json:"id,string,omitempty"`
Name string `json:"name,omitempty"`
}
Cela se trouve à peu près à mi-chemin de la documentation de Marshal .
Veuillez noter que vous ne pouvez pas décoder la chaîne vide en spécifiant omitempty
car elle est uniquement utilisée lors de l'encodage.
Envoyé: {"id": 1} Reçu: {"id": "1"}
Réglons ça.
Votre cas est -> http post 'localhost: 8080/users/blahblah' id = 1
Changez-le en -> http post 'localhost: 8080/users/blahblah' id: = 1
Pas besoin de faire "json: id, string", juste "json: id" est suffisant . Bonne chance!