jackson-databind註解

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

@JsonBackReference    @JsonManagedReference

常常和@JsonManagedReference一般配對使用,一般用在父子關係中。less

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

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

在序列化時,@JsonBackReference的做用至關於@JsonIgnore,此時能夠沒有@JsonManagedReference。orm

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

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

  若是有@JsonManagedReference,則會自動注入自動注入@JsonBackReference標註的屬性。 遞歸

@JsonIgnore

@JsonIgnore:做用是進行JSON操做時忽略該屬性,以斷開無限遞歸,序列化或反序列化均忽略。固然若是標註在get、set方法中,則能夠分開控制,序列化對應的是get方法,反序列化對應的是set方法。get

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

@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")。

相關文章
相關標籤/搜索