原因一:
在看起来很正常的不过的json却解析NULL
{"msg":"ok","code":0,"data":[]}
再在线json格式化测试中是正常的 但是PHP又不能进行解析 这是为什么。
可以使用trim过滤调用json中返回的bom头
var_dump(json_decode(trim($json,chr(239).chr(187).chr(191))),true);
这个时候如果可以正常解析就说明接口返回中在json字符串前有bom字符
我们就需要检查接口的文件的编码如果是utf-8 bom格式这个肯定是导致json解析失败原因。
然后我们重新测试一遍:
$json = file_get_contents('http://www.test.com/index.php'); var_dump(json_decode(trim($json,chr(239).chr(187).chr(191))),true); var_dump(json_decode($json,true));
如上就是原因一 bom头
原因二:
(1)使用UTF-8编码
(2)不能在最后元素有逗号
(3)不能使用单引号
(4)不能有\r,\t,如果有请替换
关键字词: