Jackson---随笔
最近在详细、深入的学习java的周边辅助框架,并且写下随笔,方便以后查看;并且记录下自己的思维历程,欢迎大家的拍砖。
这次主要介绍的Jackson,就是Spring Boot默认的json转换工具。既然是工具,大家掌握一种便可,内部深入的设计思路可不做
深入,但是应用我们一定要掌握。本着这样的思路,我们将从以下几个方面做下介绍。
1、安装
我们如果要使用Jackson,需要再maven中引入相关的类包。Jackson主要包含了三个类包:
a、Jackson Core
b、Jackson Annotations
c、Jackson Databind
Jackson不只是json的转换工具,还可以做其他形式的文件做转换及分析。比如:YAML 、 CBOR 等。
2、设计思路
Jackson工具主要做两件事情:
序列化:Java Object 转换为 Json
反序列化:Json 转换为 Java Object
序列化,是调用的Java Object 的get方法;反序列化,是首先分析json,然后按照field name 调用对应的set方法。
3、工具
Jackson 为我们提供了两种工具:
更上层的工具:ObjectMapper 。 其包含了序列化、反序列化方法
底层工具:JsonPaser(反序列化) 、 JsonGenerator (序列化) 。 若是Jackson提供的默认序列化、反序列化工具不足以支持我们的需求,便可以自定义序列化工具。
4、对象
使用Jackson框架,我们将会遇到三种对象。Json 、 JsonNode 、 Java Object ,三者之间可以相互转化,具体的转换方法不在一一的表述。
5、注解
主要分为三种:序列化注解、反序列化注解。序列化注解:是Java 对象序列化时用到的;反序列化注解:是Json反序列化到Java对象用到的注解。剩下的一种及时序列化、反序列化均可以使用的。
序列化、反序列化:
JsonIgnore : 忽视 指定的属性
JsonIgnoreProperties : 忽视指定的属性
JsonIgnoreType : 忽视指定的类型
JsonAutoDetect : 自动发现非public的属性
反序列化:
JsonSetter : 反序列化时,Json中的属性名称
JsonAnySetter : 应用到Map对象,key做json中的属性,value做属性对应的值
JsonCreator: 应用在Java 类型为不可变的类,注解应用在构造方法上,并且需要JsonProperty指定json属性名称指定属性名称
JacksonInject : Java 对象中的属性值需要被注入
JsonDeserialize : 自定义反序列化实现的工具
序列化:
JsonInclude:只是包含指定值的属性
JsonGetter : 序列化到Json中的属性名称
JsonAnyGetter : 应用在Map对象上,Map中的Key映射到Json中的属性,Value做Json中的值
JsonPropertyOrder:属性字段的顺序
JsonRawValue: 映射到json中为原值
JsonValue: 简单的序列化方法
JsonSerialize:序列化方法