6

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

4

1 回答 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 回答