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.
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.
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!
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