jackson-databind注解


jackson中的@JsonBackReference和@JsonManagedReference,以及@JsonIgnore均是為了解決對象中存在雙向引用導致的無限遞歸(infinite recursion)問題。這些標注均可用在屬性或對應的get、set方法中。 

@JsonBackReference    @JsonManagedReference

經常和@JsonManagedReference通常配對使用,通常用在父子關系中。

@JsonBackReference標注的屬性在序列化(serialization,即將對象轉換為json數據)時,會被忽略(即結果中的json數據不包含該屬性的內容)。

@JsonManagedReference標注的屬性則會被序列化。

在序列化時,@JsonBackReference的作用相當於@JsonIgnore,此時可以沒有@JsonManagedReference。

但在反序列化(deserialization,即json數據轉換為對象)時,

  如果沒有@JsonManagedReference,則不會自動注入@JsonBackReference標注的屬性(被忽略的父或子);

  如果有@JsonManagedReference,則會自動注入自動注入@JsonBackReference標注的屬性。 

@JsonIgnore

@JsonIgnore:作用是進行JSON操作時忽略該屬性,以斷開無限遞歸,序列化或反序列化均忽略。當然如果標注在get、set方法中,則可以分開控制,序列化對應的是get方法,反序列化對應的是set方法。

在父子關系中,當反序列化時,@JsonIgnore不會自動注入被忽略的屬性值(父或子),這是它跟@JsonBackReference和@JsonManagedReference最大的區別。

@JsonIgnoreProperties

在類的頭部統一聲明忽略的屬性,如:

@JsonIgnoreProperties({ "extra", "uselessValue" })
public class Value {
  public int value;
}

對於意外的位置屬性,也可以忽略

@JsonIgnoreProperties(ignoreUnknown=true)
public class PojoWithAny {
  public int value;
}

 

@JsonFormat

@JsonFormat 此注解用於屬性上,作用是把Date類型直接轉化為想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。

@JsonProperty

 此注解用於屬性上,作用是把該屬性的名稱序列化為另外一個名稱,如把trueName屬性序列化為name,@JsonProperty("name")。


免責聲明!

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



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