22.Jackson中@JsonProperty等常用注解

##转载地址,请查看原文: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

上一篇:@JsonField和@JsonProperty的使用和区别


下一篇:json中大写开头的字段无法读取