如果值在整数范围内,杰克逊将反序列化并转换为整数,而不是转换为长整数。我想将所有值转换为 Long。是否存在简单的问题解决方案?
问问题
12690 次
1 回答
6
Jackson 反序列化为您告诉它的类型,因此如果您将属性声明为 long 或 Long 类型,它将构造它。但也许你正在绑定到“无类型”结构,比如Map
?如果所有值都是 type Long
,您可以适当地声明 type ,例如:
Map<String,Long> map = objectMapper.readValue(json, new TypeReference<Map<String,Long>>() { });
或者,可能能够为Object.class
不同的处理添加自定义解串器(默认解串器是org.codehaus.jackson.map.deser.UntypedObjectDeserializer
)。
如果我知道您实际上要做什么,这可能会有所帮助-Integer
并且Long
都是数字,因此通常区别并不重要...那么需要 Longs 的原因是什么?
于 2010-06-29T23:45:34.913 回答