前端在接收到服务端的值时如何把null的字段给个默认值,有没有好用的第三方库或这种问题好的解决方案?

发布于 2022-09-11 14:35:39 字数 521 浏览 30 评论 0

问题描述

restful开发模式,但是,前端在得到服务端传过来的数据时,很多没给默认值,很多都是null,导致在使用时容易报错,比如字符串.toString()、length等等。
如果每次使用之前,每个字段都判断下是否为null,感觉这种方式效率很低,并且容易遗忘,有没有好的方法可以统一进行处理。

以前做服务端时,序列化之前可以配置一些参数,没有数据时就给设置的默认值,但是这个服务端有时候也忘记配置,或者说他们也不愿意多做这一步,并且完全依赖服务端来做这些事情确实也不太靠谱。前端应该有自己比较好的容错机制。

问题出现的环境背景及自己尝试过哪些方法

原本想着自己写一个公用方法,在请求返回时,判断返回数据类型,如果是是对象这遍历每个属性,判断值,并设置默认属性,不是对象则做其他设置处理。

但是这样每个返回的数据都会被这样处理一遍,感觉效率不是很高。

你期待的结果是什么?实际看到的错误信息又是什么?

期望一个优雅的,效率高的解决方式,如果和我上面说的方式一样,请和我一起等待更好的方式吧,请惜墨!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

眼泪淡了忧伤 2022-09-18 14:35:39

严格来讲,这种问题应该由后台规范数据格式

如果是历史遗留问题,后台不能修改了,只能由前端处理,那么可以用try...catch...处理

//假设正常的数据应该是这样
data = {
    img:[
        {
            name:'名字',
            src:''
        }
    ],
    title:{
        txt:'标题'
    }
}

//结果在返回的时候成了这样

data = {
    img:null,
    title:null
}

//我们可以这样来处理

var source = {};

try{
    source.img = data.img[0]['name'];
    source.title = data.title['txt'];
}catch{
    source.img = '';
    source.title = '默认标题';
}

这样就不会出错了

能否归途做我良人 2022-09-18 14:35:39

楼主的问题,和我之前回答过的差不多。怎么更好更优雅的做防御编程?可以参考这篇文章 https://segmentfault.com/q/10...。希望对你有点启发~

凉世弥音 2022-09-18 14:35:39

你如果用的是axios的话,可以使用transformResponse。然后按你的想法改返回值。

比如返回的json,递归判断是否是null,是改成''

问题是你前端又不能知道默认值该是''还是0
和后台沟通吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文