PHP 擷取JSON json_decode返回NULL解決辦法

來源:互聯網
上載者:User

標籤:

在用json_decode對JSON格式的字串進行解碼時竟然為空白,頁面空白啊,整半天檢查這裡檢查那裡,問同事都沒用。

今天必應搜尋了下,問題解決了,原來是有BOM頭輸出,大蝦的解決辦法如下:

1)、json_decode($json,boolean):$json為json格式的字元,第二個參數為TRUE時表示轉換為數組,預設的FALSE表示

轉換為對象。

2)、json_decode要求的字串比較嚴格:

(1)使用UTF-8編碼(2)不能在最後元素有逗號(3)不能使用單引號(4)不能有\r,\t,如果有請替換
解決辦法一:
所以問題來了,不小心在返回的json字串中返回了BOM頭的不可見字元,某些編輯器預設會加上BOM頭,如下處理才能正確解析json資料:
<?php$info = json_decode(trim($info,chr(239).chr(187).chr(191)),true);

方法二:在轉為json之前對中文進行轉碼
function arrayRecursive(&$array, $function, $apply_to_keys_also = false){    static $recursive_counter = 0;    if (++$recursive_counter >1000 ) {        die(‘possible deep recursion attack‘);    }    foreach ($array as $key => $value) {        if (is_array($value)) {            arrayRecursive($array[$key], $function, $apply_to_keys_also);        } else {            $array[$key] = $function($value);        }        if ($apply_to_keys_also && is_string($key)) {            $new_key = $function($key);            if ($new_key != $key) {                $array[$new_key] = $array[$key];                unset($array[$key]);            }        }    }    $recursive_counter--;}/************************************************************** * *  將數群組轉換為JSON字串(相容中文) * @param  array $array 要轉換的數組 * @return string      轉換得到的json字串 * @access public * *************************************************************/function JSON($array){    arrayRecursive($array, ‘urlencode‘, true);    $json = json_encode($array);    return urldecode($json);}echo JSON($user);
View Code

轉載地址:https://segmentfault.com/q/1010000002991973

還有一篇介紹的也詳細:http://www.cnblogs.com/xcxc/p/3729207.html

 

PHP 擷取JSON json_decode返回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.