找回密码
 立即注册

QQ登录

只需一步,快速开始

phoben 讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-11-10 09:51  /   查看:1451  /  回复:7



经常需要在项目里通过"XXX.XX",来获取 JSON 属性值,但如果属性名不存在会抛异常,导致程序结束。
这是不合理的,如果属性值不存在直接返回空值 Null 即可。
例如在 JS 里,如果data.content不存在,只会返回 null,不会报错。

抛异常会导致逻辑发生中断,但属性不存在是非常正常的,有时候我们需要允许这个属性不存在。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-11-10 17:57:15
沙发
抛异常会导致逻辑发生中断,但属性不存在是非常正常的,有时候我们需要允许这个属性不存在。
超哥,可以再举个真实的例子不?比如说什么情况下需要允许这个属性不存在呢?
回复 使用道具 举报
renho活字格认证
银牌会员   /  发表于:2023-11-10 22:30:08
板凳
取值这一块确实人性化欠缺
回复 使用道具 举报
phoben讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-11-10 23:20:00
地板
本帖最后由 phoben 于 2023-11-10 23:26 编辑
David.Zhong 发表于 2023-11-10 17:57
超哥,可以再举个真实的例子不?比如说什么情况下需要允许这个属性不存在呢?


1,一般用于用户传参进来,我根据参数取 json 的对应属性,如果用户的参数,在 json 中并不存在,我只需要空值。
2,前端提交 json 给后端,后端需要取某属性值,如果没有提供这个属性,我需要知道。但是现在只要尝试访问这个属性就抛异常,这个没法操作了。
3,最常见的,用服务端写对外接口,接受一个 data 参数,并约定好内部结构,有些参数不是必填,例如 data.qty,对于非必填参数,一般用户是不比提供的,但是如果提供了,我就需要读取并使用,此时后端命令中使用 data.qty 读取判断是否空值即可,但活字格现在不让我访问 data.qty,一旦 qty 不存在就会直接中断报错,这个显然不合理。

其实场景已经不重要了,看原生代码逻辑是怎么处理得就可以,如果不这么处理肯定有问题
回复 使用道具 举报
phoben讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-11-11 16:55:09
6#
lh123 发表于 2023-11-11 15:19
异常是要提醒的。他不过是不进行if来处理一下。我是要异常提示。

我都用IF进行判断来处理。我认为异常 ...

空值足够判断了,没必要终止命令
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-11-13 15:17:28
7#
从本质出发,js是一种弱类型语言,C#是一种强类型语言,服务端命令是沿用了强类型语言的概念,所以在没有进行非空检验的情况下,取一个不存在的属性,会报错,如果有相关的逻辑,一是可以提前判空,也是可以用异常捕获命令处理后续逻辑。

此外C#是在C# 6.0中,引入了一个 ?. 的运算符,可以更简洁的实现需要判空的逻辑。

服务端是否支持?可空标识?
https://gcdn.grapecity.com.cn/showtopic-95703-1-1.html
(出处: 葡萄城开发者社区)

这个已经有记录需求,可以再次跟进一下~~~
回复 使用道具 举报
phoben讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2023-12-5 11:03:12
8#
David.Zhong 发表于 2023-11-13 15:17
从本质出发,js是一种弱类型语言,C#是一种强类型语言,服务端命令是沿用了强类型语言的概念,所以在没有进 ...

钟总,不知道这个需求最终解决方案有了吗?下个103版本中是否包含?
我这边项目中大量的用到了对外API接口,每个接口都接收十几个不同参数,有的必填,有的不必填,现在这个机制使我对不必填的参数不敢取值,只好要求对方全部必填,哪怕为空都行,很是麻烦,劳烦跟进一下,谢谢
回复 使用道具 举报
Patrick.Zhu
银牌会员   /  发表于:2023-12-5 17:59:01
9#
超哥,这个功能103确实是包不进去了,这个需求还和所有需求在一起衡量和排期中,毕竟资源和时间有限,我们需要确保能够在整体上为更多的用户提供最大的价值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部