[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

posted @ 2022-10-15 11:20  Yorkey  阅读(72)  评论(0编辑  收藏  举报