我正在編寫使用數據庫的PHP代碼。爲此,我使用一個數組作爲哈希映射。 每當從我的數據庫中添加或刪除內容時,我都會將其保存到文件中。PHP json_decode返回null
我被我的數據庫結構強制使用這種方法,不能使用mysql或任何其他標準數據庫(學校項目,所以結構保持不變)。
我建了兩個功能:
function saveDB($db){
$json_db = json_encode($db);
file_put_contents("wordsDB.json", $json_db);
} // saveDB
function loadDB(){
$json_db = file_get_contents("wordsDB.json");
return json_decode($json_db, true);
} // loadDB
當回聲荷蘭國際集團的字符串編碼後,我得到或從文件加載後,我得到一個有效的JSON(測試了一個JSON觀衆)每當我試着使用json_decode()
解碼字符串,我得到空(用var_dump()
測試它)。
json字符串本身非常長(〜200,000個字符,這只是爲了測試)。
我試過如下:
- 雙/單引號替換單/雙引號(沒有任何反斜槓,用一個反斜槓和三個反斜槓而任意組合,我可以用不同數量的想到。原始和替換字符串中的反斜槓),手動和使用
str_replace()
。 - 在json字符串之前和之後添加引號。
- 更改頁面的編碼。
- 解碼時不保存到文件(在編碼之後)。
- 檢查斜槓和反斜槓。沒有被發現。
- 嘗試
addslashes()
。 - 嘗試使用各種「Escape String」變體。
json_last_error()
不起作用。我沒有得到錯誤號(獲得null,不是0)。
這不是我的服務器,所以我不確定使用什麼PHP版本,我不能升級/降級/安裝任何東西。
我相信尺寸與它有關,因爲小字符串似乎工作正常。
謝謝大家:)
將你的實際文件壓縮後上傳到別處測試。否則這可能會成爲猜謎遊戲。 ||各種失敗原因包括UTF-8 BOM前綴,字符串中的所有無效字符集,或者僅僅是內存不足的錯誤 - 深度嵌套的PHP數組非常昂貴,並且'json_decode'本身在處理時保存了一些狀態數據。 ||否則嘗試一個不同的JSON庫; PEAR的Services_Json或upgradephp的up_json_decode。 – mario 2012-08-08 20:10:45
你可以顯示'JSON'的輸出(也許在pastebin.com上),它不能與'json_decode'一起使用來測試嗎? – Kalpesh 2012-08-08 20:36:43
我不確定是否可以使用其他json庫,因爲我無法控制服務器,也不知道那裏安裝了什麼。 該json可以在這裏找到: https://www.dropbox.com/s/t0nm040wjfgzq25/wordsDB.json – YMI 2012-08-09 16:11:57