Jackson中@JsonProperty等常用注解

  • 2019 年 10 月 21 日
  • 筆記

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格式数据,即这个类jishi转换成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