博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP json_decode 函数解析 json 结果为 NULL 的解决方法
阅读量:6148 次
发布时间:2019-06-21

本文共 1879 字,大约阅读时间需要 6 分钟。

在做网站 CMS 模块时,对于模块内容 content 字段,保存的是 json 格式的字符串,所以在后台进行模块内容的编辑操作 ( 取出保存的数据 ) 时,需要用到 json_decode() 函数。

但是在解析的时候,使用 json_decode() 函数解析的结果一直是 NULL,没有出现希望解析成的数组。下面是问题和分析:

1. 当输出 json 字符串时,代码和页面的显示内容分别是:

echo $content = $res[0]['con']['content'];

只需要考虑 $content , $res[0]['con']['content'] 是从返回的数据中取出 content 的值,这里不需要考虑。这时页面显示:

{"bpic":"group1\/M00\/00\/0D\/rBAK31STtZeAe056AAKWuBmsAgc339.jpg","bname":"112","breason":"22","about1":"3334","about2":"444","about3":"555","tpic1":"group1\/M00\/00\/0D\/rBAK31STsyGARPwHAAMcD98U8xo736.jpg","tpic2":"group1\/M00\/00\/0D\/rBAK31STtZeAEnEaAANwlbOXMYA393.jpg","tpic3":"group1\/M00\/00\/0D\/rBAK31STtSqARRUMAAKWuBmsAgc150.jpg"}

稍微美化一下:

{
"bpic":"group1\/M00\/00\/0D\/rBAK31STtZeAe056AAKWuBmsAgc339.jpg","bname":"112","breason":"22","about1":"3334","about2":"444","about3":"555","tpic1":"group1\/M00\/00\/0D\/rBAK31STsyGARPwHAAMcD98U8xo736.jpg","tpic2":"group1\/M00\/00\/0D\/rBAK31STtZeAEnEaAANwlbOXMYA393.jpg","tpic3":"group1\/M00\/00\/0D\/rBAK31STtSqARRUMAAKWuBmsAgc150.jpg"}

2. 此时使用 json_decode() 解析 $content,并使用 var_dump 打印:

$content = json_decode($content,true);

但是页面却显示 NULL。此时使用 json_last_error() 函数打印一下错误,页面显示4,也就是语法错误。

echo $errorinfo = json_last_error();   //输出4 语法错误

 

解决方法一:

出现这个问题是因为在 json 字符串中反斜杠被转义,只需要用 htmlspecialchars_decode() 函数处理一下 $content 即可:

$content = htmlspecialchars_decode($content);

此时再使用 json_decode() 函数解析,就没有问题了,页面输出:

Array ( [bpic] => group1/M00/00/0D/rBAK31STtZeAe056AAKWuBmsAgc339.jpg [bname] => 112 [breason] => 22 [about1] => 3334 [about2] => 444 [about3] => 555 [tpic1] => group1/M00/00/0D/rBAK31STsyGARPwHAAMcD98U8xo736.jpg [tpic2] => group1/M00/00/0D/rBAK31STtZeAEnEaAANwlbOXMYA393.jpg [tpic3] => group1/M00/00/0D/rBAK31STtSqARRUMAAKWuBmsAgc150.jpg )

 

解决方法二:

在保存 json 数据时使用 urlencode() 函数:

$content = urlencode(json_encode($content));

解析时使用 urldecode() 函数:

$content = urldecode($content);

即可避免反斜杠转义造成的无法解析。

转载地址:http://rrlya.baihongyu.com/

你可能感兴趣的文章
邮件营销整体解决方案
查看>>
借助工具Profwiz进行加域及账户配置文件迁移
查看>>
09-OSPF故障排查总结
查看>>
ORACLE 10g 下载地址列表
查看>>
使用ManageEngine NetFlow Analyzer监控netflow
查看>>
Struts2 漏洞彻底解决办法
查看>>
暖心的回复
查看>>
6月又过去一大半了。
查看>>
分布式文件系统MogileFS介绍
查看>>
使用Python实现Hadoop MapReduce程序
查看>>
python内置函数2-classmethod()
查看>>
python内置函数5-getattr()
查看>>
win2008重新生成SID
查看>>
通过PXE部署系统时报错 0xc000000f
查看>>
修改计算机MAC地址(win7)
查看>>
linux下如何挂接(mount)光盘镜像文件、移动硬盘、U盘、Windows网络共享和NFS网络共享...
查看>>
shell逻辑控制语句之case
查看>>
我的友情链接
查看>>
重装系统再也不用担心桌面文件丢失了
查看>>
家用NAS也可以配置iSCSI盘
查看>>