2016-11-28 157 views
0

必須重新執行此操作,因爲最後一個問題被標記爲重複。但「重複」問題是關於json解碼而不是編碼和添加到文件。我還在我的問題中說明了我所嘗試過的事情,因爲它恰好是'重複'的接受答案。JSON.encode正在添加反斜槓

請不要在沒有實際檢查的情況下重複標記爲重複。

當我試圖創建一些產生JSON數據的文件,結果是像這樣:

"{\"1\":{\"title\":\"Sidemen: The Book\",\"ISBN\":\"1473648165\" 

,你可以看到,它已結束一切「」引號「」

它也增加了很多:'\'我不想要。

這是我目前有:

$json = json_encode($BookList); 

和我在PHP創建文件像這樣:

$fp = fopen($filename, 'w'); 
fwrite($fp, json_encode($json)); 
fclose($fp); 

我曾嘗試:

$json = json_encode($BookList, JSON_UNESCAPED_SLASHES); 

和:

$json = json_encode($BookList, JSON_UNESCAPED_SLASHES); 
$json_edited = stripslashes($json); 

但似乎沒有任何工作。

任何想法?就像這樣產生

更新

圖書列表:

$BookList[++$id] = [ 
    'title' => (string) $item->ItemAttributes->Title, 
    'ISBN' => '' .(string) $item->ItemAttributes->ISBN 
]; 
+0

您可能看到PHP在'var_export'中轉義這些引號的結果,它可能在實際的字符串內容中沒有這些斜槓。 – segFault

+0

羅傑,@ T.J.Crowder –

回答

5

你是雙編碼數據,例如,將其通過兩次json_encode。你有

$json = json_encode($BookList, JSON_UNESCAPED_SLASHES); 
// -----^^^^^^^^^^^ 

fwrite($fp, json_encode($json)); 
// ---------^^^^^^^^^^^ 

您只希望那些一個

+0

圖例,修復它。謝謝。 – JamesG