依赖
1 | <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> |
jackson-databind 依赖 jackson-core 和 jackson-annotations,当添加 jackson-databind 之后, jackson-core 和 jackson-annotations 也随之添加到 Java 项目工程中。
在添加相关依赖包之后,就可以使用 Jackson。
配置信息
//在反序列化时忽略在 json 中存在但 Java 对象不存在的属性
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
//在序列化时日期格式默认为 yyyy-MM-dd'T'HH:mm:ss.SSSZ
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false)
//在序列化时忽略值为 null 的属性
mapper.setSerializationInclusion(Include.NON_NULL);
//忽略值为默认值的属性
mapper.setDefaultPropertyInclusion(Include.NON_DEFAULT);更多配置信息可以查看 Jackson 的 DeserializationFeature,SerializationFeature 和 Include。
注解
Jackson 根据它的默认方式序列化和反序列化 java 对象,若根据实际需要,灵活的调整它的默认方式,可以使用 Jackson 的注解。
常用的注解及用法如下:
@JsonProperty:用于属性,把属性的名称序列化时转换为另外一个名称。
@JsonProperty("birth_date")
private Date birthDate;@JsonFormat:用于属性或者方法,把属性的格式序列化时转换成指定的格式。
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
public Date birthDate;@JsonPropertyOrder:用于类,指定属性在序列化时 json 中的顺序。
@JsonPropertyOrder({ "birth_date", "name" })
public class Person{}说明
Jackson 最常用的 API 就是基于”对象绑定” 的 ObjectMapper。
writeValue:将 java 对 象序列化 为 json,并 将 json 存 储成不同的格式,String(writeValueAsString),Byte Array(writeValueAsString),Writer, File,OutStream 和 DataOutput。
readValue:将不同的数据源像 String , Byte Array, Reader,File,URL, InputStream 将 json 反序列化为 java 对象。
封装
1 |
|
使用
实体对象转化字符串
1 | try { |
字符串转化键值对象
1 | try { |
创建对象
1 | ObjectMapper objectMapper = ObjectMapperUtil.getInstance().getObjectMapper(); |