PHP json_decode 函数解析 json 结果为 NULL 的解决方法
在做网站 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);
即可避免反斜杠转义造成的无法解析。
PHP json_decode 函数解析 json 结果为 NULL 的解决方法的更多相关文章
- kafkaStream解析json出错导致程序中断的解决方法
出错在 KStreamFlatMapValues 方法执行时,由于json异常数据无法解析,结果生成的值为null,报错信息如下: 2018-04-18 19:21:04,776 ERROR [app ...
- Android Studio 解析json文件出现中文乱码解决方法
作为一个Android开发初学者,好不容易找到解决方法,跟大家分享一下, 其实很简单,只要保持服务器上的文件(date2.json)与软件的编码方式一样就行. 我用的Android Studio是ut ...
- php怎么解析utf-8带BOM编码的json数据,php解析json数据返回NULL
今天遇到一个问题,json_decode解析json数据返回null,试了各种方法都不行,最后发现,原来是json文件编码的问题. 当json_decode解析utf-8带BOM格式的json数据时, ...
- 使用json_decode无法解析json
在接入合作方接口时,遇到一个json无法解析出来代码如下: <?php $res='{"resultcode":007,"resMsg":"!& ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- 【java】Execption的 e.getMessage()为null的解决方法
================================ 场景: 当代码出现异常时通常都需要将异常信息写入到日志中,异常信息越详细越有利于问题的排查.而通过的Exception.getMess ...
- .NET MVC Json()处理大数据异常解决方法
[1-部分原文]: .NET MVC Json()处理大数据异常解决方法 整个项目采用微软的ASP.NET MVC3进行开发,前端显示采用EasyUI框架,图表的显示用的是Highcharts,主要进 ...
- eval函数解析json数据时加上圆括号的原因
var temp = eval("(" + data + ")"); //解析json数据 json是以”{}”的方式来开始以及结束的,在JS中,“{}”会被当 ...
- Jquery.ajax报parseerror Invalid JSON错误的原因和解决方法:不能解析
(默认: 自动判断 (xml 或 html)) 请求失败时调用时间.参数有以下三个:XMLHttpRequest 对象.错误信息.(可选)捕获的错误对象.如果发生了错误,错误信息(第二个参数)除了得到 ...
随机推荐
- kvm与selinux
Desktop virsh start 16lnmp error: Failed to start domain 16lnmp error: unsupported configuration: Un ...
- Tomcat热部署和虚拟目录配置
1.Tomcat如何配置热部署 默认就是 <Host appBase="webapps" autoDeploy="true" name="loc ...
- OAuth2 通用组件源码下载(支持新浪微博、QQ、淘宝)(转载)
转载地址:http://www.cyqdata.com/download/article-detail-54302 OAuth2 社区通用组件说明: 源码为C#(.NET)写成,目前支持新浪微博. ...
- z-index属性
在使用z-index这个属性之前,我们必须先了解使用z-index的必要条件: .要想给元素设置z-index样式,必须先让它变成定位元素,说的明白一点,就是要给元素设置一个postion:relat ...
- hdu 4021 n数码
好题,6666 转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2652410.html 题意:给出一个board,上面有24个位置,其中2 ...
- matlab练习程序(多边形顶点凹凸性)
生成简单多边形后,有时还需要对多边形各顶点的凹凸性做判断. 先计算待处理点与相邻点的两个向量,再计算两向量的叉乘,根据求得结果的正负可以判断凹凸性. 结果为负则为凹顶点,为正则为凸顶点. 凹顶点用o表 ...
- URI和URL的区别
这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...
- 针对mysql中分表批量添加字段
项目中有用到这种类似的分表,如果要添加一个字段的话,该怎么办呢? dba表示弄 一个脚本批量处理就行了,卧槽,这我哪会啊,于是硬着头皮又继续问dba,dba给一个脚本,一看是这样的. #!/bin/b ...
- SU sugain命令学习
不足之处,欢迎广大博友批评指正.
- http://my.oschina.net/chinacion/blog/647641
http://my.oschina.net/chinacion/blog/647641