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));
|