温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php7中如何解决json_decode null的问题

发布时间:2021-12-03 17:35:49 阅读:277 作者:小新 栏目:编程语言
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章给大家分享的是有关php7中如何解决json_decode null的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

具体问题描述:

1、确认文件无BOM头

2、尝试了如下多种方式去除非法字符串,但是仍然输出NULL

        $some_string = htmlspecialchars_decode($some_string);
        $some_string = preg_replace("/\t/"" "$some_string);
        $some_string = preg_replace("/\n/"' '$some_string);
        $some_string = str_replace("\n"' '$some_string);
        $some_string = str_replace ('\n',''$some_string);

3、json_last_error()输出4,Syntax error, malformed JSON

4、直接输出字符串,浏览器能够正常解析josn,如下截图

php7中如何解决json_decode null的问题

解决办法:

因为你的字符串不是标准的JSON字符串, 标准的JSON字符串每个string类型都要用"引起了

测试代码

<?php 
$jsonStr1 '{status: {RetCode:0, msg: "success"}, data: {}}';
var_dump(json_decode($jsonStr1true));
var_dump(json_last_error());
echo "--------分割线--------".PHP_EOL;
$jsonStr2 '{"status": {"RetCode":0, "msg": "success"}, "data": {}}';
var_dump(json_decode($jsonStr2true));

结果

NULL
int(4)
--------分割线--------
array(2) {
  ["status"]=>
  array(2) {
    ["RetCode"]=>
    int(0)
    ["msg"]=>
    string(7"success"
  }
  ["data"]=>
  array(0) {
  }
}

============== 更新 ==============

经过调试,发现是 BOM 引起的,下面是解决方案

$dataString = $merchant_arr['data'];
$A = substr($dataString, 01);
$B = substr($dataString, 11);
$C = substr($dataString, 21);
if ((ord($A) == 239) && (ord($B) == 187) && (ord($C) == 191)) {
    $dataString = substr($dataString, 3);
}
$dataArray = json_decode($dataString, true);

感谢各位的阅读!关于“php7中如何解决json_decode null的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×