Не удается unmarshal строку в Go значение типа int64
у меня есть struct
type tySurvey struct {
Id int64 `json:"id,omitempty"`
Name string `json:"name,omitempty"`
}
я json.Marshal
напишите байты JSON на странице HTML. в jQuery изменяет name
поле в объекте и кодирует объект с помощью jQueries JSON.stringify
и строка сообщений jQuery для обработчика Go.
id
поле кодируется в виде строки.
отправлено: {"id":1}
получил: {"id":"1"}
проблема в том, что json.Unmarshal
не удается unmarshal, что JSON, потому что id
уже не целое.
json: cannot unmarshal string into Go value of type int64
что самый лучший путь к обрабатывать такие данные? Я не хочу вручную преобразовывать каждое поле. Я хочу написать компактный, без ошибок код.
котировки не так уж плохо. JavaScript не работает хорошо с int64.
Я хотел бы узнать простой способ unmarshal json со строковыми значениями в значениях int64.
2 ответов
это обрабатывается путем добавления ,string
к вашему тегу следующим образом:
type tySurvey struct {
Id int64 `json:"id,string,omitempty"`
Name string `json:"name,omitempty"`
}
Это можно найти примерно на полпути через документацию для Маршал.
обратите внимание, что вы не можете декодировать пустую строку, указав omitempty
как он используется только при кодировании.
отправлено: {"id": 1} получено: {"id":"1"}
давайте исправим это.
ваш случай - > http post 'localhost: 8080 / users / blahblah' id=1
изменить на -> http post 'localhost: 8080 / users / blahblah' id:=1
нет необходимости делать" JSON: id,string "вещь, просто" json:id " достаточно. Удачи!