🌻 Jakcson介绍
Jackson
用于Json
的序列化(serialization)
和反序列化(deserialization)
。
Jackson
包含三个包jackson-core、jackson-annotation、jackson-databind,作用如下
jackson-core
- 基于流解析Json,就是从流中读取,生成事件,类似xml的sax。核心类是JsonGenerator和JsonParser。jackson-annotation
- 提供了注解jackson-databind
- 对jackson-core进行封装,可以实现Json和Pojo转换、Json和JsonTree(类似dom树)转换。核心类是ObjectMapper、JsonNode
🍀 Jackson常用对象
ObjetcMapper
- 配置SerializationFeature、配置JsonInclude、序列化和反序列化
- config() - 配置序列化和反序列化,使用DeserializationFeature和SerializationFeature
- setSerializationInclusion() - 配置序列化包含那些field
- writerWithDefaultPrettyPrinter() - 获取Objectwriter,用于把Pojo转换成Json
- readValue() - Json转成Pojo
- getJavaTypeFactory() - JavaType工厂,Json转Pojo时候,提供JavaType
ObjectWriter
- 把Pojo转成Json
- writeValueAsString() - Pojo转Json,保存在str中
- writeValue() - Pojo转Json,保存在File、Stream、Output中
- writeValueAsByte() - Pojo转Json,保存在byte[]中
JavaTypeFactory
- 获取JavaType
JavaType
- 反序列化,转成JavaType 提供的类型
TypeReference
- 反序列化,转成TypeRefence提供的类型
DeserializationInclusionFeature
- 常量,用于配置反序列化
SerializationInclusionFeature
- 常量,用于配置序列化
JsonInclude.Include
- 常量,配置序列化包含什么字段
🌾 Jackson使用
🌱Jackson - 导包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
🌿 Jackson - 序列化和反序列化Pojo、List、Array
// 准备实体类
Employee emp = new Employee(1, "yuki", null, 0, "Java开发",
2333.33, new Date(), new Address