JSON.encode正在添加反斜杠

Jam*_*esG 0 php json

不得不重新做这个,因为最后一个问题被标记为重复关闭.但"重复"问题是关于json解码不编码和添加到文件.我在我的问题中也说过我尝试过的事情,因为它恰好是"重复"的接受答案.

如果没有实际检查,请不要再次标记为重复.

当我尝试使用一些生成的JSON数据创建文件时,结果如下:

 "{\"1\":{\"title\":\"Sidemen: The Book\",\"ISBN\":\"1473648165\"
Run Code Online (Sandbox Code Playgroud)

如你所见,它已将所有内容包装在""引号中""

它还添加了很多: '\',我不想要.

这就是我目前拥有的:

$json = json_encode($BookList);
Run Code Online (Sandbox Code Playgroud)

我在PHP中创建文件,如下所示:

$fp = fopen($filename, 'w');
fwrite($fp, json_encode($json));
fclose($fp);
Run Code Online (Sandbox Code Playgroud)

我试过了:

$json = json_encode($BookList, JSON_UNESCAPED_SLASHES);
Run Code Online (Sandbox Code Playgroud)

和:

$json = json_encode($BookList, JSON_UNESCAPED_SLASHES);
$json_edited = stripslashes($json);
Run Code Online (Sandbox Code Playgroud)

但似乎没有任何工作.

有任何想法吗?

更新

书籍清单生成如下:

$BookList[++$id] = [
    'title'  => (string) $item->ItemAttributes->Title,
    'ISBN'   => '' .(string) $item->ItemAttributes->ISBN
];
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

您对数据进行了双重编码,例如,将其传递json_encode两次.你有

$json = json_encode($BookList, JSON_UNESCAPED_SLASHES);
// -----^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

并且

fwrite($fp, json_encode($json));
// ---------^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

你只想要其中一个.