要傳遞到json_decode
字符串無效JSON,這是返回NULL
的原因。
當我從評論檢查錯誤代碼,請產生給4
對應於恆JSON_ERROR_SYNTAX
只是意味着JSON字符串有語法錯誤。
(見http://php.net/manual/en/function.json-last-error.php)
您應檢查(回聲)您
$str = file_get_contents('http://localhost/data.json');
得到什麼(你可以編輯你的答案,並張貼 - 或它的一部分)
確定它無效JSON
;問題在於:data.json
。
然後當你修復的東西,並從data.json
得到什麼預計我會確保你真的需要使用html_entity_decode
上獲取的數據。
這將是「奇怪的」有HTML編碼的JSON數據。
UPDATE
看着你從data.json
得到什麼它似乎JSON數據實際上包含HTML實體(如我看到的
S中存在)
這實際上是怪異的正確的做法是修復如何生成data.json
確保非html編碼返回JSON數據,字符集是UTF-8,響應內容類型是Content-Type: application/json
。
我們不能在這裏加深這一點,因爲我不知道data.json
來自哪裏或產生它的代碼。最終你可能會發布另一個答案。
所以這裏是一個快速修復只要正確的方法是我剛纔建議的。
在解碼html實體時,非中斷空格
變爲2字節的UTF-8字符(字節值196,160),對於JSON編碼的數據,其爲無效。
這個想法是刪除這些字符;你的代碼變成:
$str = file_get_contents('http://localhost/data.json');
$decodedstr = html_entity_decode($str);
// the character sequence for decoded HTML
$nbsp = html_entity_decode(" ");
// remove every occurrence of the character sequence
$decodedstr = str_replace($nbsp, "", $decodedstr);
$jarray = json_decode($decodedstr, true);
你試過了,沒有'html_entity_decode'步驟,只是'json_decode($ str,true)'? – rickdenhaan
在'json_decode'方法後面打印'json_last_error()'方法 –
oke我試過沒有html_entity_decode,它仍然返回null。當我打印json_last_error我得到4 – FutureCake