首页  >  文章  >  后端开发  >  为什么 `json_encode` 会向我的 JSON 输出添加不需要的反斜杠?

为什么 `json_encode` 会向我的 JSON 输出添加不需要的反斜杠?

Linda Hamilton
Linda Hamilton原创
2024-11-13 00:41:01884浏览

Why does `json_encode` add unwanted backslashes to my JSON output?

JSON 难题:解决 json_encode 中的反斜杠异常

在 JSON 数据编码领域,json_encode 函数长期以来一直是值得信赖的工具。然而,最近的遭遇引发了一个令人费解的问题:为什么 json_encode 添加不需要的反斜杠?

为了深入研究这个谜团,让我们检查提供的代码:

print_r($result);
echo json_encode($result);

print_r 命令显示关联数组符合预期。当应用 json_encode 时,它​​将数组转换为 JSON,这看起来是有效的。然而,经过进一步检查,隐藏的斜杠出现了。

{
    "logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg",
    "img_id":"54",
    "feedback":{"message":"File uploaded","success":true}
}

为什么会有这些无关的反斜杠?进一步的调试揭示了故事的转折。该异常不是发生在 json_encode 本身,而是发生在后续的 parseJSON 调用中。使用 data.toSource() 检查 JavaScript 数据发现不符合 JSON 的字符串:

({response:"{\"logo_url\":\"http:\/\/storelocator.com\/wp-content\/uploads\/gallery\/7f\/3b\/71b9520cfc91a90afbdbbfc9d2b2239b_logo.jpeg\",\"img_id\":\"62\",\"feedback\":{\"message\":\"File uploaded\",\"success\":true}}", status:200})

解决方案:

解决此问题的关键在于为 json_encode 指定“JSON_UNESCAPED_SLASHES”选项。 PHP 5.4 版中引入,此选项有效地防止函数在正斜杠中添加反斜杠。

json_encode($array,JSON_UNESCAPED_SLASHES);

有了这些知识,不需要的反斜杠的谜团就被解决了,从而实现无缝 JSON 编码,而不会受到逃避现实的干扰!

以上是为什么 `json_encode` 会向我的 JSON 输出添加不需要的反斜杠?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn