Ped*_*ers 14 java json jackson
我使用Jackson 1.8.3将以下域对象序列化和反序列化为JSON
public class Node {
private String key;
private Object value;
private List<Node> children = new ArrayList<Node>();
/* getters and setters omitted for brevity */
}
Run Code Online (Sandbox Code Playgroud)
然后使用以下代码对对象进行序列化和反序列化
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(destination, rootNode);
Run Code Online (Sandbox Code Playgroud)
然后用反序列化反序列化
mapper.readValue(destination, Node.class);
Run Code Online (Sandbox Code Playgroud)
对象的原始值是字符串,双打,长整数或布尔值.但是,在序列化和反序列化期间,Jackson将Long值(例如4)转换为Integers.
我如何"强制"杰克逊将数字非十进制值反序列化为Long而不是Integer?
Fab*_*nge 26
杰克逊2.6中有一个新功能专门用于此案例:
配置要使用的ObjectMapper DeserializationFeature.USE_LONG_FOR_INTS
请参阅https://github.com/FasterXML/jackson-databind/issues/504
cowtowncoder在2015年5月19日推出了一个关闭此问题的提交修复#504和#797
Sta*_*Man 10
如果type声明为java.lang.Object,则Jackson使用"自然"映射,如果值适合32位,则使用Integer.除了自定义处理程序之外,您还必须强制包含类型信息(通过在field/getter旁边添加@JsonTypeInfo;或者通过启用所谓的"默认类型").
| 归档时间: |
|
| 查看次数: |
33612 次 |
| 最近记录: |