JSON使用之Jackson
Posted 嗨小叔的程序猿之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON使用之Jackson相关的知识,希望对你有一定的参考价值。
Jackson 简单易用,不依赖于外部jar 包,而且更新速度比较快。其也是 SpringMVC 框架 json 格式化输出的默认实现。
一、结构
lib包依赖包含三部分:
jackson-core: 核心包
jackson-annotations : 注解包
jackson-databind : 数据绑定(依赖 core 和 annotations)
二、 处理方式
三种 json 处理方式:
Streaming API : 其他两种方式都依赖于它而实现,如果要从底层细粒度控制 json 的解析生成,可以使用这种方式;
Tree Model : 通过基于内存的树形结构来描述 json 数据。json 结构树由 JsonNode 组成。不需要绑定任何类和实体,可以方便的对 JsonNode 来进行操作。
Data Binding : 最常用的方式,基于属性的 get 和 set方法以及注解来实现 JavaBean 和 json 的互转,底层实现还是 Streaming API.
三、项目实战(案例)
1、新建两个Bean对象,其中一个Bean对象包含另一个Bean对象,如下所示:
(注:日期类需要加时区timezone,否则转换过程中会出现相差一天之类的情况)
1、Streaming API 转换
结果测试:
2、Tree Model 方式
结果测试:
public static void main(String[] args) throws Exception{
System.out.println("TreeModel toJsonStr:");
JacksonTreeModel jacksonTreeModel = new JacksonTreeModel();
String jsonStr = jacksonTreeModel.toJson();
System.out.println();
System.out.println();
System.out.println("TreeModel parse jsonString:");
jacksonTreeModel.parseJsonStr(jsonStr);
}
3、Data-binding方式
jsonStr --> Bean
jsonStr --> Bean --> jsonStr
4、其他(这边添加BeanUtilTool转换时候保证空值也进行初始化赋值)
JsonDateValueProcessor.Java请参照()
添加setNullValueSerializer,保证若为空值,直接赋初始值为空串
测试:
其他参考:
-->
-->
以上是关于JSON使用之Jackson的主要内容,如果未能解决你的问题,请参考以下文章