[Java] jackson 和 fastjson 处理 JSON对比
1.JSON字符串 -> 对象
1.1处理原型数值
1.1.1情况1,未设置值
实体类
@Setter
@Getter
@ToString
public class Info {
private int age;
}
测试代码
@Test
public void testString() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String[] jsons = {"{}", "{\"age\": null}", "{\"age\": \"\"}"};
for (String json : jsons) {
System.out.println("待处理json:" + json);
System.out.printf("jackson解析结果:%s\n", objectMapper.readValue(json, Info.class));
System.out.printf("fastjson解析结果:%s\n----------------------" +
"\n", JSON.parseObject(json, Info.class));
}
}
运行结果
待处理json:{}
jackson解析结果:Info(age=0)
fastjson解析结果:Info(age=0)
----------------------
待处理json:{"age": null}
jackson解析结果:Info(age=0)
fastjson解析结果:Info(age=0)
----------------------
待处理json:{"age": ""}
jackson解析结果:Info(age=0)
fastjson解析结果:Info(age=0)
----------------------
Process finished with exit code 0
1.1.2情况2,设置值
实体类
@Setter
@Getter
@ToString
public class Info {
private int age = -1;
}
运行结果
待处理json:{}
jackson解析结果:Info(age=-1)
fastjson解析结果:Info(age=-1)
----------------------
待处理json:{"age": null}
jackson解析结果:Info(age=0)
fastjson解析结果:Info(age=-1)
----------------------
待处理json:{"age": ""}
jackson解析结果:Info(age=0)
fastjson解析结果:Info(age=-1)
----------------------
Process finished with exit code 0
1.2处理包装型数值
1.2.1情况1,未设置值
实体类
@Setter
@Getter
@ToString
public class Info {
private Integer age;
}
运行结果
待处理json:{}
jackson解析结果:Info(age=null)
fastjson解析结果:Info(age=null)
----------------------
待处理json:{"age": null}
jackson解析结果:Info(age=null)
fastjson解析结果:Info(age=null)
----------------------
待处理json:{"age": ""}
jackson解析结果:Info(age=null)
fastjson解析结果:Info(age=null)
----------------------
Process finished with exit code 0
1.2.2情况2,设置值
实体类
@Setter
@Getter
@ToString
public class Info {
private Integer age = -1;
}
运行结果
待处理json:{}
jackson解析结果:Info(age=-1)
fastjson解析结果:Info(age=-1)
----------------------
待处理json:{"age": null}
jackson解析结果:Info(age=null)
fastjson解析结果:Info(age=null)
----------------------
待处理json:{"age": ""}
jackson解析结果:Info(age=null)
fastjson解析结果:Info(age=null)
----------------------
Process finished with exit code 0