簡單介紹實體類或物件序列化時,忽略為空屬性的操作

大雄45發表於2021-11-12
導讀 這篇文章主要介紹了實體類或物件序列化時,忽略為空屬性的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
第一種,在配置檔案配置

在application.xml直接配置,這種方式是全域性配置,所有返回給前端物件的屬性為null或""都不進行序列化;

spring: 
  jackson:
    #實體類轉json時欄位為null不參與序列化
    default-property-inclusion: NON_EMPTY
default-property-inclusion 常用的4種型別
ALWAYS 預設
NON_DEFAULT 屬性為預設值不序列化
NON_EMPTY 屬性為 “” 或者為NULL都不序列化
NON_NULL 屬性為NULL時不序列化
第二種,給每個類單獨設定

給為空時需要忽略序列化的物件屬性加 @JsonInclude(Include.NON_NULL),也可以直接加到類上,表示一整個物件的屬性為null時都不參與序列化;

@JsonInclude 括號裡面可以設定不同的型別

Include.Include.ALWAYS 預設

Include.NON_DEFAULT 屬性為預設值不序列化

Include.NON_EMPTY 屬性為 “” 或者為NULL都不序列化

Include.NON_NULL 屬性為NULL時不序列化

如果配置了全域性,又給某個物件進行註解方式的設定,註解方式會覆蓋全域性的設定。

SpringBoot2.x 不反回空值屬性

由於有的時候我們返回的資料中存在屬性沒有值得情況,或者是屬性的值為空白字串,這會浪費網路流量,又或者是前端框架存在的bug會導致null值或者是空白字串在渲染的時候會報錯。

處理方式
第一種

全域性的方式:在SpringBoot的配置檔案中新增以下屬性,即可達到全域性過濾

spring.jackson.default-property-inclusion=non_empty
第二種

區域性的方式:在返回的實體類屬性或者是類名上新增以下註解,即可達到過濾效果

@JsonInclude(JsonInclude.Include.NON_EMPTY)

注意

這種方式對於空集合也是成立的。屬性一共有如下值可選

Include.Include.ALWAYS 預設

Include.NON_DEFAULT 屬性為預設值不序列化

Include.NON_EMPTY 屬性為 空(“”) 或者為 NULL 都不序列化

Include.NON_NULL 屬性為NULL 不序列化

以上為個人經驗,希望能給大家一個參考。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2841925/,如需轉載,請註明出處,否則將追究法律責任。

相關文章