后端传给前端的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已经变成了空字符!但这条属性依然存在!
声明:本文为作者学习廖师兄实战课程中总结所得,如有贻误,望指正!谢谢!