佚名通过本文主要向大家介绍了后端没返回到json,后端没有返回到json,前端和后端的区别,后端开发,后端等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:为何后端经常会将一个空数组返回为 null ?
描述:
解决方案1:
描述:
后端写的 api ,返回如下的 json 数据
{"status":0,"data":{"applies":null,"total":"0"},"message":""}
其中 applies
字段返回的类型应该是数组。
但是记录数为0的情况下,为何会返回 null
而不是 []
后者不是更符合规范吗?
还是说后端有不得已的苦衷?
解决方案1:
哎,我也经常遇到这样的后端,这时候只能去沟通下,看看他们能不能做下处理,任何时候都不要出现null,这时候是空数组,某一些值的时候可以是空字符串,哪怕没有哪个key我都能接受,最害怕null,,,
解决方案2:applies是从数据库联查出来的吧?你判断一下就可以了
解决方案3:applies = return array
如果数组为空的话,那么applies就是null
规则是人定的,也可以这么约定
if(empty(array))
return "empty"
因为不知道后端遭受了什么样的对待,让我们加上一些log,仔细倾听它的苦衷~
解决方案5:自己保证自己代码的健壮性好吧?
每个人都认为前面的人传来的一定是[],那任何一个环节出一点问题,返回null,整体都会挂。
每个人拿数据自己||一个[],那任何一个环节出问题,都不会挂。
更符合规范……但并不一定是被遵守的。如果你不能控制后端,那你就将取到的数据简单的处理下吧:
解决方案7:javascript
var result = {"status":0,"data":{"applies":null,"total":"0"},"message":""} result.data.applies = result.data.applies || []
这个应该是后端代码不够严谨吧。比如后端可以加一个判断,如果 applies 是一个array,但是没有值,也需要用array,不能使用NULL 等。
测试代码:
$c;
$arr = array(
'status' => 1,
'data' => array(
'a' => 111,
'b' => array(),
'c' => $c,
'd' => (empty($c) ? array() : $c)
)
);
echo json_encode($arr);
输出为:
{
status: 1,
data: {
a: 111,
b: [ ],
c: null,
d: [ ]
}
}