1. 程式人生 > 程式設計 >java jackson 將物件轉json時,忽略子物件的某個屬性操作

java jackson 將物件轉json時,忽略子物件的某個屬性操作

我就廢話不多說了,大家還是直接看程式碼吧~

//父物件
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時,忽略子物件的某個屬性操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。