Jackson中@JsonProperty等常用注解


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM