杰克逊反序列化并强制转换为Integer所有数字,如果整数范围内的值而不是强制转换为Long。我想将所有值转换为Long。 是否存在问题的简单解决方案?
答案 0 :(得分:6)
杰克逊反序列化你输入的类型,所以如果你声明属性为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
都是数字,所以区别并不重要...所以是什么原因让需要多头?