Джексон десериализует тип, который вы ему сообщаете, поэтому, если вы объявите свойство типа 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
- оба числа, поэтому часто различие не имеет большого значения ... так в чем причина?требовать Лонга?