客户端不接收 null, 各位服务端大佬都是怎么优雅处理的?

查看 251|回复 24
azhangbing   
因为 kotlin 默认非空
wu67   
举个例子.
你这样返回的时候, JS 代码仔需要写多好几个判断来取数, 尤其是需要字符串内容做正则的时候
if (typeof a === 'string' && /balabala/.test(a)) {}
要不就是 if (a.length) 能解决的时候, 需要 if (Array.isArray(a) && a.length) , 看起来是没什么, 但是页面结构复杂度以上去, 数据字段一开始多, 这一大堆多出来的判断, 就会成为客户端代码的屎山
NewYear   
1 、有的语言里,null 会报错。还会导致 if 判断不按预期的分支走。(特别适合用来写屎山,因为从语言层面你看不出任何一点不按预期分支走的可能,直到单独调试在这里才发现卧槽)
2 、有的语言里,null 不会报错但是每次都要考虑它就显得很烦了,谁都不想增加负担。
一般的解决方案:禁止 null 的存在,明确每个值的意义。
未定义也不许用 null ,字符串可以用"",数字可以用 0 或者-1 (具体按自己的定义来)。
数字类型:1 是男,0 是女,-1 是未定义
又或者 0 是未定义,1 是男,2 是女,3 是跨性别男,4 是……
字符串类型:""是未定义,"男"是男。
日期类型:“1970 年 1 月 1 日”是未定义,或者“0000 年 00 月 00 日”是未定义。
MoonLin   
不返回的话他们可以自己用默认值,返回为 null 就覆盖了默认值,如果要处理的话其实也可以,自己实现反序列化就好了,但是我估计客户端不愿意干,不然你也不会来问了。所以你不如直接不返回,看你用什么序列化框架,一般如 6#所述加个注解就好了。
NewYear   
null 和 string/int/date 的类型都不同,不能直接用真的很烦。
楼主后端用是什么语言,不是强类型语言吗。
sanmaozhao   
我觉得应该返回 null ( OP 没说返回的数据格式是啥,默认 JSON 了)
1 、JSON 里面本来就是有 null 这个类型的
2 、数字型,不返回 null 的话,用什么表示这项数据没有值呢?用哪个数值都不太合适
如果没值的项直接不返回的话,其实和返回 null 差别也不大
比如对于 js ,就是判断 undefined 和 null 的差别
wu67   
还有一个典中典的, 忘记是什么时候遇到的, 有个变量的值, 是 'null'...
出 bug 找前端查的时候, 那一个山崩地裂...
if('null') {1} else {2}
// 1
null123456   
调用此方法:StringUtils.isNotBlank(String str)
vagusss   
springboot 默认的序列化应该是 Jackson, 应该有配置项可以直接达到你要的效果
lyxxxh2   
啥类型的就返回啥类型 很正常
web 端口也一样
字符: ''.split('a')
数组: [].map((() => {})如果返回个 null,前端: mmp
您需要登录后才可以回帖 登录 | 立即注册

返回顶部