Jackson 經常使用註解

 
自動檢測,(做用在類上)來開啓/禁止自動檢測。
fieldVisibility:字段屬性的可見範圍。
 
getterVisibility:getter的可見範圍(對象序列化成json字符串時的可見範圍)。
 
isGetterVisibility:is-getter的可見範圍(如boolean類型的getter)。
 
setterVisibility:setter的可見範圍(json字符串反序列化成對象時的可見範圍)。
 
creatorVisibility:構造方法的可見範圍。
 
可見範圍是一個枚舉,包括:
 
Visibility.ANY:表示從 private 到 public 修飾,均可見。
 
Visibility.NON_PRIVATE:表示除 private 修飾不可見外,其餘均可見。
 
Visibility.PROTECTED_AND_PUBLIC:protected 和 public可見。
 
Visibility.PUBLIC_ONLY:僅 public 可見。
 
Visibility.NONE:因此皆不可見。
 
Visibility.DEFAULT:缺省,全部被 public 修飾的屬性、 getter 和全部 setter(無論能見度)皆可見。
jackson 默認的字段屬性發現規則以下:
全部被 public 修飾的字段 -> 全部被 public 修飾的 getter- > 全部被 public 修飾的 setter

2.@JsonIgnore

做用在字段或方法上,用來徹底忽略被註解的字段和方法對應的屬性。
 

3.@JsonProperty

做用在字段或方法上,用來對屬性的序列化/反序列化,能夠用來避免遺漏屬性,同時提供對屬性名稱重命名 
 
 

4.@JsonIgnoreProperties

做用在類上,用來講明有些屬性在序列化 / 反序列化時須要忽略掉,能夠將它看作是 @JsonIgnore 的批量操做,但它的功能比 @JsonIgnore 要強,好比一個類是代理類,咱們沒法將將 @JsonIgnore 標記在屬性或方法上,此時即可用 @JsonIgnoreProperties 標註在類聲明上,它還有一個重要的功能是做用在反序列化時解析字段時過濾一些未知的屬性,不然一般狀況下解析到咱們定義的類不認識的屬性便會拋出異常。
能夠註明是想要忽略的屬性列表如 @JsonIgnoreProperties({"name","age","title"}),
也能夠註明過濾掉未知的屬性如 @JsonIgnoreProperties(ignoreUnknown=true)

5.@JsonUnwrapped

做用在屬性字段或方法上,用來將子JSON對象的屬性添加到封閉的 JSON 對象。
 

6.@JsonIdentityInfo

2.0+ 版本新註解,做用於類或屬性上,被用來在序列化/反序列化時爲該對象或字段添加一個對象識別碼,一般是用來解決循環嵌套的問題。
 
 

7.@JsonNaming

 jackson 2.1+ 版本的註解,做用於類或方法,注意這個註解是在 jackson-databind 包中而不是在 jackson-annotations 包裏,它可讓你定製屬性命名策略,做用和前面提到的 @JsonProperty 的重命名屬性名稱相同。
 

8.@JsonTypeInfo

做用於類/接口,被用來開啓多態類型處理,對基類/接口和子類/實現類都有效。
 

9.@JsonSubTypes

做用於類/接口,用來列出給定類的子類,只有當子類類型沒法被檢測到時纔會使用它,通常是配合 @JsonTypeInfo 在基類上使用。
 
做用於子類,用來爲多態子類指定類型標識符的值。
 
 做用於類,能夠自定義多態的類型標識符,這個平時不多用到,主要是現有的通常就已經知足絕大多數的需求了,若是你須要比較特別的類型標識符,建議使用這2個註解,本身定製基於 TypeResolverBuilde r和 TypeIdResolver 的類便可。
 

12.@JsonSerialize 和 @JsonDeserialize

做用於方法和字段上,經過 using(JsonSerializer)和using(JsonDeserializer)來指定序列化和反序列化的實現,一般咱們在須要自定義序列化和反序列化時會用到,好比下面的例子中的日期轉換。
 

13.@JsonPropertyOrder

做用在類上,被用來指明當序列化時須要對屬性作排序,它有2個屬性,
一個是 alphabetic:布爾類型,表示是否採用字母拼音順序排序,默認是爲 false,即不排序。
 
 

14.JsonView

視圖模板,做用於方法和屬性上,用來指定哪些屬性能夠被包含在 JSON 視圖中。
 
 

15.@JsonFilter

Json屬性過濾器,做用於類,做用同上面的 @JsonView,都是過濾掉不想要的屬性,輸出本身想要的屬性。和 @FilterView 不一樣的是 @JsonFilter 能夠動態的過濾屬性,好比我不想輸出以 system 開頭的全部屬性。
 

16.@JsonIgnoreType

做用於類,表示被註解該類型的屬性將不會被序列化和反序列化。
 
 

17.@JsonAnySetter

做用於方法,在反序列化時用來處理遇到未知的屬性的時候調用,在本文前面咱們知道能夠經過註解 @JsonIgnoreProperties(ignoreUnknown=true)  來過濾未知的屬性,可是若是須要這些未知的屬性。
 
 

18.@JsonCreator

 做用於方法,一般用來標註構造方法或靜態工廠方法上,使用該方法來構建實例,默認的是使用無參的構造方法,一般是和 @JsonProperty 或 @JacksonInject 配合使用。
 

19.@JacksonInject

做用於屬性、方法、構造參數上,被用來反序列化時標記已經被注入的屬性。
 
 

20.@JsonPOJOBuilder

做用於類,用來標註如何定製構建對象,使用的是 builder 模式來構建,好比 Value v = new ValueBuilder().withX(3).withY(4).build(); 這種就是 builder 模式來構建對象,一般會喝 @JsonDeserialize.builder 來配合使用。
相關文章
相關標籤/搜索