Rumah >pembangunan bahagian belakang >tutorial php >php作为接口返回json数据格式问题
php作为接口返回json数据格式问题,返回的数据中,如果是多维数组就是[{ ...... }]这种形式,如果这里面空,应该返回 [ ] 这种。
如果是一维数组,{.......}这种形式,如果它是空,也要返回 { } 这种形式。
问题来了,如果多维数组为空,比如$result = array();,返回的就是 [ ] 这种形式。改怎么改呢?
echo str_replace('[]', '{}', json_encode($json)); 这样的话就把所有的 [ ] 都替换成 { } 大括号了
if判断一下输出的值,根据不同的数据结果输出不同的$json后再json_encode
返回空数组或空对象会影响使用吗?
返回空数组或空对象会影响使用吗?
那是因为你没有判空
那是因为你没有判空
不需要替换的,你用java的json进行解析后就是个数组,直接判断就好了。闪退的原因是因为你没有对空对象传递进行屏蔽导致程序致命错误直接闪退,是代码不严谨导致,跟json的括号没关系。
当然你也可以做一下类型转换(不过使用时不判空总是不行的)
$a = array( 'b' => (object)array(), 'c' => array(),);echo json_encode($a);{"b":{},"c":[]}
不需要替换的,你用java的json进行解析后就是个数组,直接判断就好了。闪退的原因是因为你没有对空对象传递进行屏蔽导致程序致命错误直接闪退,是代码不严谨导致,跟json的括号没关系。
建议你返回json的时候最外层用对象,这样json_encode之后就是{};
$rst = new stdClass();echo json_encode($rst);$rst->code = 200;$rst->errormessage = "操作成功";$rst->data = array( 'name' => '张三');echo json_encode($rst);
不需要替换的,你用java的json进行解析后就是个数组,直接判断就好了。闪退的原因是因为你没有对空对象传递进行屏蔽导致程序致命错误直接闪退,是代码不严谨导致,跟json的括号没关系。
不需要替换的,你用java的json进行解析后就是个数组,直接判断就好了。闪退的原因是因为你没有对空对象传递进行屏蔽导致程序致命错误直接闪退,是代码不严谨导致,跟json的括号没关系。