Демаршалинг целых чисел в строковой кодировке в Go
При попытке демаршалинга JSON со строковыми значениями в целочисленное поле может возникнуть ошибка: «json: невозможно демаршалировать строку в значение Go типа int64». Это связано с тем, что демаршалинг JSON по умолчанию предполагает, что числовые типы, такие как int64, должны содержать числовые символы.
Проблема:
Структура Go, определяющая поле int64, получает JSON с соответствующим поле, закодированное как строка. Это несоответствие типов данных приводит к сбою процесса демаршалинга.
Решение:
Рекомендуемое решение — использовать тег «,string» в теге структуры json для целочисленного поля. . Это указывает процессу демаршалинга принимать значения типа string:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
Реализация:
Благодаря измененной структуре данные JSON с полем id, закодированным в виде строки, теперь можно успешно демаршалировать в объект Go типа tySurvey.
Примечание:
Важно помнить, что указание пропущения в теге не позволит декодировать пустую строку. omitempty используется исключительно для целей кодирования.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3