解决php使用json_decode把json数据转换成Object对象或Array数组返回NULL的原因

前言:

让我们一起探讨php在使用json_decode函数解码json字符串时,解码不成功返回NULL的问题原因分析和解决方法。

在php中,json字符串解码一般使用json_decode()函数,如下:

json_decode($json,$bool);

第一个$json参数传字符串,

第二个参数$bool若为true,返回array数组;若为false(或者不写),返回object对象。

如果返回NULL,说明报错,可使用 echo json_last_error() 输出错误代码,得到的整数值对应下表:

解决php使用json_decode把json数据转换成Object对象或Array数组返回NULL的原因_第1张图片

json_last_error()比较常见的是整数4,是json字符串在json_decode之前已不完整,所以语法错误。 

1、错误写法一:多了个双引号

header('Content-type: text/json; charset=utf-8');
echo '{"rows":1","data":[{"uid":1,"name":"tom","age":18,"sex":"男"}]}';

解决php使用json_decode把json数据转换成Object对象或Array数组返回NULL的原因_第2张图片

2、错误写法二:属性和值使用的是单引号

header("Content-type: text/json; charset=utf-8");
echo "{'rows':1,'data':[{'uid':1,'name':'tom','age':18,'sex':'男'}]}";

解决php使用json_decode把json数据转换成Object对象或Array数组返回NULL的原因_第3张图片

上述代码属性和值使用的是单引号,这个在javascript里是可以正常解析成JSON的,但在PHP中就不行了,PHP里面要写成'{ "key": "value" }',属性和值必须要用双引号。

你可能感兴趣的:(PHP)