后端傳給前端的Bean中有的屬性為Null怎么處理?
- 前端向后端請求數據,而返回的Bean中有的屬性為Null值,如圖
一般遇到這種情況,是要盡量避免向前端傳Null值的,因為前端對這樣的數據處理起來很麻煩,所以一般情況下我們如果字段是非必需的數據,一般選擇不返回這條屬性,如果是必須的話,一般就返回一個空字符占位。
方法一:直接過濾,選擇不返回!
- 在對象不多的情況下可以選擇直接在DTO對象上加上注解,如圖
//如果值為Null則不返回該條屬性。
@JsonInclude(JsonInclude.Include.NON_NULL)
- 上面那個注釋掉的那個注解也可以同樣的效果,只不過已經被技術淘汰了!
如果對象太多的話,就需要設置全局變量了,這個時候只需找到配置文件,在里面添加一條記錄即可!
#設置全局,Null值不返回到前端
jackson:
default-property-inclusion: non_null
- 兩個方法都可以直接將Null值的屬性直接過濾掉!不返回給前端!效果如下,我們可以看到的是orderDtailList對象已經不在了!
方法二:返回空字符占位或設置默認值。
當然以上的方法是是直接不返回。但一個項目中不可能所有的Null值都不返回,有的數據即使為Null值,又必須返回的數據,這個時候我們一般就選擇返回空占位符,或空符號位!
- 這個時候我們可以直接為對象設置默認值,例如我的orderDtailList返回的是List ,我就直接給它初始化為ArrayList:
這是我之前的以及返回情況:
這是修改過后以及返回情況:
- 可以看到的是我的屬性並沒有返回Null值,而是返回一個空數組占位符!
如果返回給前端是一個字符串的話,一般就設置個空字符:
如圖,我之前沒有給msg設置默認值:
用postman獲取數據,可以看到都是返回的值為Null:
這里我將msg設置默認為空字符,再用postman獲取返回值可以看到,msg已經變成了空字符!但這條屬性依然存在!
聲明:本文為作者學習廖師兄實戰課程中總結所得,如有貽誤,望指正!謝謝!