json_decode函数解析json结果为NULL的原因

问题描述:

$content = json_decode($content,true);
print_r($content);// 返回NULL
echo $errorinfo = json_last_error();//输出4 语法错误

可能是由于json字符串中反斜杠被转义
解决方法:

$content = htmlspecialchars_decode($content);
$content = json_decode($content,true);
print_r($content);// 返回正常

或者可以在保存json数据时,使用urlencode()函数处理一下

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

解析时再使用urldecode()函数,可避免反斜杠转义形成的没法解析

$content = urldecode($content);
print_r($content);// 返回正常

也有可能是以下原因导致:
1、JSON格式错误:JSON格式必须是有效的,否则解析器无法解析它。可以使用JSON在线验证器来验证JSON格式是否正确。
2、编码问题:json_decode函数默认将JSON文本解码为UTF-8字符集,如果JSON文本包含非UTF-8字符集的数据,则无法解析。
3、无效的JSON数据类型:json_decode函数只能处理JSON数据类型为对象或数组的JSON文本,如果JSON文本是其他类型的数据,例如数字、字符串或布尔值,则无法解析。
4、解码器错误:在PHP中,json_decode函数是通过JSON解码器实现的,如果解码器发生错误,就无法解析JSON文本。可能是PHP版本不兼容或解码器缺失等问题。

解决方法:
1、检查JSON格式是否正确,可以使用JSON在线验证器进行验证。
2、确认JSON文本字符集为UTF-8。
3、确认JSON文本数据类型为对象或数组。
4、确认PHP版本是否兼容json_decode函数,或者尝试使用其他JSON解码器。

你可能感兴趣的:(json,php)