后端写的 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,仔细倾听它的苦衷~
更符合规范……但并不一定是被遵守的。如果你不能控制后端,那你就将取到的数据简单的处理下吧:
javascript
var result = {"status":0,"data":{"applies":null,"total":"0"},"message":""} result.data.applies = result.data.applies || []