Мне нужно сохранить числа, передаваемые в JSON, которые соответствуют требованиям, чтобы быть int32, для хранения в базе данных как int32 вместо числа с плавающей запятой.
У меня есть приложение Go, которое получает данные запроса JSON, которые вставляются в базу данных Mongo. Эти данные распаковываются в интерфейс и передаются в метод вставки mgo (https://godoc.org/github.com/globalsign/mgo#Collection.Insert).
По умолчанию, чтобы демонтировать данные в интерфейс, Go конвертирует числа в float64s. Проблема, с которой я столкнулся, состоит в том, что целые числа, не распределенные из JSON, не сохраняют свои типы должным образом, все числа передаются как числа с плавающей запятой, и после вставки в Mongo данные сохраняются как числа с плавающей запятой. Понятно, что это связано с ограничениями при наборе текста при использовании JSON в качестве держателя данных.
Поскольку данные JSON не имеют четкого определения и могут включать в себя различные типы вложенных динамических объектов, создание структур для этой проблемы не представляется приемлемым вариантом.
Я исследовал некоторые варианты, которые включают итерацию по данным JSON и использование UseNumbers () для декодирования, но проблема, с которой я сталкиваюсь, заключается в том, что операция может быть дорогой, поскольку некоторые данные JSON могут содержать несколько сотен Поля и их отражение могут привести к замедлению при обработке запросов, хотя я не знаю, насколько это повлияет на производительность.