PHP json_decode 函數解析 json 結果為 NULL 的解決方案

來源:互聯網
上載者:User

標籤:

在做網站 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
)

 

PHP json_decode 函數解析 json 結果為 NULL 的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.