PHP技术论坛

标题: json_decode解析JSON为空NULL的原因 [打印本页]

作者: admin    时间: 2017-8-23 11:49
标题: json_decode解析JSON为空NULL的原因
1:JSON字符串格式错误

可以使用使用json_last_error()函数获取到的返回值来帮助我们判断出问题的原因。
如果为0正确 具体错误如下


0 = JSON_ERROR_NONE No error has occurred  

1 = JSON_ERROR_DEPTH   The maximum stack depth has been exceeded  

2 = JSON_ERROR_STATE_MISMATCH   Invalid or malformed JSON  

3 = JSON_ERROR_CTRL_CHAR Control character error, possibly incorrectly encoded  

4 = JSON_ERROR_SYNTAX Syntax error  

5 = JSON_ERROR_UTF8 Malformed UTF-8 characters, possibly incorrectly encoded PHP 5.3.3


2:编码问题

默认JSON字符串是UTF-8格式 如果是其他格式可能出错

$output = iconv('gbk', 'utf8', $output);


3:未知原因 可能是BOM问题

这个蛮奇怪的 检查了PHP并没有BOM 但是解决方法按BOM最后解决了

json_decode(substr($str, 3), true);


或则这样
$result = trim($result, "\xEF\xBB\xBF");
print_r(json_decode($result, true));


作者: admin    时间: 2017-8-23 12:14
最后一个原因补充:THINKPHP debug为true 关闭就可以了 原因未知 可能是开启会生成BOM。




欢迎光临 PHP技术论坛 (http://php.hh85.com/) Powered by Discuz! X3.2