No se puede desmarcar la cadena en el valor Go de tipo int64


Tengo estructura

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

Hago json.Marshal escribir bytes JSON en la página HTML. jQuery modifica el campo name en object y codifica el objeto usando jQueries JSON.stringify y jQuery post string to Go handler.

id campo codificado como cadena.

Enviado: {"id":1} Recibido: {"id":"1"}

El problema es que json.Unmarshal no desmarca ese JSON porque id ya no es entero.

json: cannot unmarshal string into Go value of type int64

¿Cuál es la mejor manera de manejar tales datos? No deseo convertir manualmente todos los campos. Me desea escribir código compacto y libre de errores.

Las citas no están tan mal. JavaScript no funciona bien con int64.

Me gustaría aprender la manera fácil de desmarcar json con valores de cadena en valores int64.

Author: Flimzy, 2014-01-16

2 answers

Esto se maneja agregando ,string a su etiqueta de la siguiente manera:

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

Esto se puede encontrar a mitad de la documentación de Marshal.

Tenga en cuenta que no puede decodificar la cadena vacía especificando omitempty ya que solo se usa cuando se codifica.

 45
Author: Dmitri Goldring,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-05 15:22:46

Enviado: {"id":1} Recibido: {"id":"1"}

Vamos a arreglar esto.

Su caso es - > http post 'localhost: 8080/users / blahblah' id = 1

Cámbialo a - > http post 'localhost: 8080 / users / blahblah' id: = 1

No hay necesidad de hacer "json:id,string", solo "json:id" es suficiente. ¡Buena suerte!

 0
Author: KaungMyatChanThar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-21 03:54:41