javascript - 使用 JSON.parse() 转义

标签 javascript json escaping

我正在尝试在 javascript <-> php 通信中应用一个简单的转义过程。我不工作...我不确定为什么。

这是我写的一些测试代码:

<head>
    <meta charset='utf-8'>
    <title>Test</title>
</head>

<body>
    <script>
        JSON.parse('[{"id":"43","english":"ar\"m","korean":"\ud314","date":"49 minute(s) ago."}]');
    </script>
</body>

</html>

转义字符是单词 arm 内的双引号。 打开页面返回的错误是:

VM84:1 Uncaught SyntaxError: Unexpected token m in JSON at position 26
     at JSON.parse (<anonymous>)
    at test.html:11
(anonymous) @ test.html:11

最佳答案

当您将 JSON 字符串作为字符串包含在 JavaScript 中时,您必须加倍反斜杠,因为反斜杠在 JavaScript 和 JSON 语法中都是元字符。

    JSON.parse('[{"id":"43","english":"ar\\\"m","korean":"\\ud314","date":"49 minute(s) ago."}]');

对于 \" 有必要使用三个 \ 字符,这样当 JSON 解析器看到它时,您就有了 \".

请注意,不需要在您的服务器发送给客户端的实际 JSON(或者客户端发送给服务器)。

请注意,将 JSON 文本作为 JavaScript 字符串常量嵌入到 JavaScript 源代码中并没有太多好的理由。如果您使用服务器端工具(如 PHP(或几乎任何其他工具))将 JavaScript 源代码构建为 HTML 文档的一部分,则可以将 JSON 作为普通的 JavaScript 对象初始化程序放入 JavaScript 源代码中,而无需额外的引号层让它看起来像一个 JavaScript 字符串常量。

关于javascript - 使用 JSON.parse() 转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42255145/

相关文章:

git - 如何在 1.8.3 中 Git stash pop specific stash?

javascript - 在数组上设置字符串属性有什么缺点?

javascript - 如何在 Struts2 自动完成器操作中传递 javascript 对象?

json - 从这里抛出的错误没有得到处理,因为封闭的 catch 并不详尽

json - 使用 Casbah/Salat 到 Json 的单一序列化层

ios - AF 网络 2.0 : Cannot POST with JSON from IOS

javascript - mongoose - 是否可以在运行时动态地向模型添加方法?

javascript - node.js index.html javascript函数未定义

sql - 如何在类似字符串的sql中转义多个字符?

python - 单引号字符串与双引号字符串