首页 > 为何后端经常会将一个空数组返回为 null ?

为何后端经常会将一个空数组返回为 null ?

后端写的 api ,返回如下的 json 数据

{"status":0,"data":{"applies":null,"total":"0"},"message":""}

其中 applies 字段返回的类型应该是数组。

但是记录数为0的情况下,为何会返回 null 而不是 []

后者不是更符合规范吗?

还是说后端有不得已的苦衷?


哎,我也经常遇到这样的后端,这时候只能去沟通下,看看他们能不能做下处理,任何时候都不要出现null,这时候是空数组,某一些值的时候可以是空字符串,哪怕没有哪个key我都能接受,最害怕null,,,


自己保证自己代码的健壮性好吧?
每个人都认为前面的人传来的一定是[],那任何一个环节出一点问题,返回null,整体都会挂。
每个人拿数据自己||一个[],那任何一个环节出问题,都不会挂。


applies是从数据库联查出来的吧?你判断一下就可以了


applies = return array
如果数组为空的话,那么applies就是null
规则是人定的,也可以这么约定
if(empty(array))
return "empty"


这个应该是后端代码不够严谨吧。比如后端可以加一个判断,如果 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: [ ]
}
}

因为不知道后端遭受了什么样的对待,让我们加上一些log,仔细倾听它的苦衷~


更符合规范……但并不一定是被遵守的。如果你不能控制后端,那你就将取到的数据简单的处理下吧:

javascriptvar result = {"status":0,"data":{"applies":null,"total":"0"},"message":""}
result.data.applies = result.data.applies || []
【热门文章】
【热门文章】