Spring rest API, почему тип данных изменяется в ответе на вызов rest API

Существует функция, которая возвращает responseEntitiy со списком массивов объектов.

return new ResponseEntity<>(apiResponse, HttpStatus.OK);

Например,

список следующих массивов,

row1{1,353543.23,100L}
row1{2,232.56,110L}.....

во время отладки я узнаю, что на этом этапе ответ имеет значения поля как BigDecimal или long в объекте apiResponse, это список массивов объектов (объекты имеют тип Bigdecimal/long), но когда он входит в вызывающую функцию, я вижу ответ, эти значения BigDecimal или long были преобразованы/рассматриваются как Integer/double в зависимости от того, есть ли десятичное число в числе или нет, это происходит для небольших чисел. Я не мог понять, где и почему он сам решает, менять типы данных при передаче.

Из-за этого функция, в которой я пытаюсь обработать этот ответ, выдает ошибку: не может преобразовать Integer в Double/long, в идеале, потому что отправляются значения bigdecimal и long. Я ожидаю, что эти значения будут как есть, сохраняя свой тип данных, но его не тот случай


person tyro    schedule 25.05.2020    source источник


Ответы (1)


По умолчанию spring использует jackson в качестве сериализатора, поэтому вы можете проверить, возникают ли проблемы с версией вы используете прямо сейчас :)

person wtsiamruk    schedule 25.05.2020
comment
Я использую Spring boot 2.1.6 и jackson 2.9. - person tyro; 26.05.2020
comment
Я снова прочитал ваш вопрос, правильно ли я понимаю, что у вас есть список чисел, переданных в качестве объекта ответа? Каков точный тип вашего списка? - person wtsiamruk; 26.05.2020
comment
Я попытался объяснить сценарий в этом вопросе " title="rest api возвращает объект ответа, но тип данных изменяется для полей ответа"> stackoverflow.com/questions/62019039/ - person tyro; 26.05.2020