##转载地址,请查看原文:https://www.cnblogs.com/arebirth/p/jsonjacksonannotation.html
[toc] Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,本文将介绍的Jackson常用注解:精简概述
Jackson的依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
##1.@JsonProperty 此注解作用于属性上,作用是把该属性的名称序列化成另一个自己想要的名称 对属性名进行重命名,在java里我们墨守规定驼峰命名,但是在一些特殊的场合下,比如数据库是下划线等,再此我们就可以进行映射,对属性名称重命名,比如在很多场景下Java对象的属性是按照规范的驼峰书写,但在数据库设计时使用的是下划线连接方式,此处在进行映射的时候使用
public class CatNode {
//@JsonProperty 指定将java对象转化为json格式的时候,对应的key
@JsonProperty(value = "u")
private String url;
@JsonProperty(value = "n")
private String name;
@JsonProperty(value = "i")
private List<?> list;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
}
##2.@JsonIgnore 注解用于属性或者方法上,用来完全忽略被注释的字段和方法对应的属性,即便这个还有其它注解,
一般标记在属性或者方法上,返回的json数据不包含被该注解引用的属性或者方法
例如下面代码中:我们不想让a属性被转换成json格式数据,即这个类即使转换成json格式,也不会包含该属性字段。
public class Test{
@JsonIgnore
private String a;
private String b;
}
##3.@JsonFormat 可以帮助我们完成格式转换,
例如我们在进行json转换的时候包含日期,通常不经过处理的话会是一个不是很友好的格式,那么我们就可以通过@JsonFormat来进行指定格式
例如:
@JsonFormat(timezone="GTM+8",pattern="yyyy-MM-dd HH:mm:ss")
private Date createDate;
##4.@JsonIgnoreProperties 可以帮我们忽略类中不存在的字段
例如:@JsonIgnoreProperties(ignoreUnknown = true)
还可以指定忽略类中多个字段在类被转成json的格式忽略掉
@JsonIngoreProperties(value={"name","sex"})
public class Test{
private String name;
private String pwd;
private String sex;
}
@JsonIgnoreProperties和@JsonIgnore我们日常使用中最大的区别就是前者修饰类的,后者多用于修饰类中的属性
具体可以查看官方文档: