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

eug*_*enn 4 serialization json jackson

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

Sta*_*Man 6

杰克逊反序列化为你告诉它的类型,所以如果你声明属性类型为long或Long,它将构造它为long.但也许你绑定到"无类型"结构,如Map?如果所有值都是类型Long,则可以恰当地声明类型,如:

Map<String,Long> map = objectMapper.readValue(json, new TypeReference<Map<String,Long>>() { });
Run Code Online (Sandbox Code Playgroud)

或者也许可以为Object.class不同的处理添加自定义反序列化器(默认反序列化器是org.codehaus.jackson.map.deser.UntypedObjectDeserializer).

如果我知道你实际上想要做什么可能会有所帮助 - Integer并且Long都是数字,所以通常区别并不重要......所以需要Longs的原因是什么?