PHP技术论坛

搜索
查看: 1327|回复: 1
打印 上一主题 下一主题

json_decode解析JSON为空NULL的原因

[复制链接]

83

主题

88

帖子

411

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
411
跳转到指定楼层
楼主
发表于 2017-8-23 11:49:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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));

回复

使用道具 举报

83

主题

88

帖子

411

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
411
沙发
 楼主| 发表于 2017-8-23 12:14:42 | 只看该作者
最后一个原因补充:THINKPHP debug为true 关闭就可以了 原因未知 可能是开启会生成BOM。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|PHP  

GMT+8, 2024-5-2 02:35 , Processed in 0.090957 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表