admin 发表于 2017-8-23 11:49:48

json_decode解析JSON为空NULL的原因

1:JSON字符串格式错误

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


0 = JSON_ERROR_NONE No error has occurred1 = JSON_ERROR_DEPTH   The maximum stack depth has been exceeded2 = JSON_ERROR_STATE_MISMATCH   Invalid or malformed JSON3 = JSON_ERROR_CTRL_CHAR Control character error, possibly incorrectly encoded4 = JSON_ERROR_SYNTAX Syntax error5 = 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:42

最后一个原因补充:THINKPHP debug为true 关闭就可以了 原因未知 可能是开启会生成BOM。
页: [1]
查看完整版本: json_decode解析JSON为空NULL的原因