##转载地址,请查看原文: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我们日常使用中最大的区别就是前者修饰类的,后者多用于修饰类中的属性
具体可以查看官方文档:
https://fasterxml.github.io/jackson-annotations/javadoc/2.6/com/fasterxml/jackson/annotation/JsonIgnoreProperties.html