前端请求后端数据,后端返回前端的值如果为Null的几种处理方式

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

  • 15
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
Vue前端可以通过以下几种方式接收后端数据: 1. 使用Vue的内置方法:可以使用Vue的内置方法(例如`axios`、`fetch`等)发送HTTP请求后端,然后接收后端返回数据。这些方法返回的是Promise对象,可以通过`.then()`方法处理返回数据。 示例代码: ```javascript import axios from 'axios'; axios.get('/api/data') .then(response => { // 处理后端返回数据 console.log(response.data); }) .catch(error => { console.error(error); }); ``` 2. 使用Vue的生命周期钩子函数:可以在Vue组件的生命周期钩子函数中发送HTTP请求并接收后端返回数据。常用的生命周期钩子函数有`created`和`mounted`,可以在这些钩子函数中调用后端接口获取数据,并将数据保存在Vue组件的数据中。 示例代码: ```javascript export default { data() { return { responseData: null }; }, created() { axios.get('/api/data') .then(response => { // 将后端返回数据保存在组件的数据中 this.responseData = response.data; }) .catch(error => { console.error(error); }); } }; ``` 3. 使用Vue的插件或库:还可以使用一些Vue的插件或库来简化数据请求和处理过程,例如`vue-resource`、`vue-axios`等。这些插件或库提供了更方便的API和功能,可以更快速地发送请求和处理返回数据。 示例代码(使用`vue-axios`): ```javascript import Vue from 'vue'; import axios from 'axios'; import VueAxios from 'vue-axios'; Vue.use(VueAxios, axios); export default { data() { return { responseData: null }; }, mounted() { this.axios.get('/api/data') .then(response => { // 将后端返回数据保存在组件的数据中 this.responseData = response.data; }) .catch(error => { console.error(error); }); } }; ``` 以上是几种常见的方式,具体选择哪种方式取决于项目需求和个人偏好。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

private_static

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值