溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php7中如何解決json_decode null的問題

發(fā)布時間:2021-12-03 17:35:49 來源:億速云 閱讀:274 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)php7中如何解決json_decode null的問題的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體問題描述:

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的問題

解決辦法:

因為你的字符串不是標(biāo)準的JSON字符串, 標(biāo)準的JSON字符串每個string類型都要用"引起了

測試代碼

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

結(jié)果

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

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

經(jīng)過調(diào)試,發(fā)現(xiàn)是 BOM 引起的,下面是解決方案

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

感謝各位的閱讀!關(guān)于“php7中如何解決json_decode null的問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI