如何反序列化并强制转换为Long所有数字?

时间:2010-06-29 12:51:24

标签: json serialization jackson

杰克逊反序列化并强制转换为Integer所有数字,如果整数范围内的值而不是强制转换为Long。我想将所有值转换为Long。 是否存在问题的简单解决方案?

1 个答案:

答案 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)。

如果我知道你实际上想要做什么可能会有所帮助 - IntegerLong都是数字,所以区别并不重要...所以是什么原因让需要多头?