實體類或對象序列化時,忽略為空屬性的操作
第一種,在配置文件配置
在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 不序列化
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- java 字段值為null,不返回該字段的問題
- 解決SpringBoot返回結果如果為null或空值不顯示處理問題
- springboot響應json null值過濾方式
- 基於@JsonSerialize和@JsonInclude註解使用方法
- Java如何取掉json數據中值為null的屬性字段