java jackson 將物件轉json時,忽略子物件的某個屬性操作
阿新 • • 發佈:2020-10-11
我就廢話不多說了,大家還是直接看程式碼吧~
//父物件 public class user implements java.io.Serializable { @JsonIgnoreProperties(value={"addressId"})//在解析成json時,忽略子屬性的addressId欄位 private Address address; private String username; //......... } //子物件 public class Address implements java.io.Serializable { private int addressId; private String address; private String phone; //.......... } //注:當物件是hibernate查出來的代理物件時,一對多物件會給子物件注入handler和hibernateLazyInitializer屬性,如果給jackson解析就會報錯 //在一對多或多對一欄位前加上@JsonIgnoreProperties(value={"handler","hibernateLazyInitializer"})即可
補充知識:SpringMVC 返回實體物件時遮蔽某些屬性
SpringMVC 可以直接已JSON的結果返回實體物件,可是返回時是所有屬性與屬性值都會一併返回,
怎樣才能遮蔽某些屬性?方法很簡單,只要在實體物件類中要遮蔽的屬性值上加 @JsonIgnore 註解,如:
@JsonIgnore
private String authorPassword;
屬性即可被遮蔽,就不用擔心有該屬性與屬性值返回到客戶端了。
另外,如果僅僅從 MyBatis 的 mapper 裡面的 select 語句中只選需要的欄位而不選需要被遮蔽的欄位,
這種方法行不通,因為最後還是會返回所有屬性,只不過未被選中的欄位會有 null 的屬性值。
以上這篇java jackson 將物件轉json時,忽略子物件的某個屬性操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。