Как десериализовать и привести к длинным номерам? - PullRequest
4 голосов
/ 29 июня 2010

Джексон десериализуется и приводит к Integer все числа, если значение в диапазоне Integer вместо этого приведено к Long.Я хотел бы привести ВСЕ значения к Long.Существует ли простое решение вопроса?

1 Ответ

6 голосов
/ 30 июня 2010

Джексон десериализует тип, который вы ему сообщаете, поэтому, если вы объявите свойство типа long или Long, оно создаст его как long.Но, возможно, вы привязываетесь к «нетипизированной» структуре, такой как Map?Если все значения имеют тип Long, вы можете просто объявить тип соответствующим образом, например:

Map<String,Long> map = objectMapper.readValue(json, new TypeReference<Map<String,Long>>() { });

В качестве альтернативы может быть возможность добавить пользовательский десериализатор для Object.class с другой обработкой (десериализатор по умолчанию равен org.codehaus.jackson.map.deser.UntypedObjectDeserializer).

Могло бы помочь, если бы я знал, что вы на самом деле пытаетесь сделать - Integer и Long - оба числа, поэтому часто различие не имеет большого значения ... так в чем причина?требовать Лонга?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...