用JSON.parse()转义

时间:2017-02-15 16:38:43

标签: 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

1 个答案:

答案 0 :(得分:5)

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

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

对于使用三个 \"个字符所需的\,以便当JSON解析器看到它时,您有\"。< / p>

请注意,必须在服务器发送给客户端的实际 JSON中添加额外\(或客户端发送给客户端)服务器)。

请注意,将JSON文本作为JavaScript字符串常量嵌入JavaScript源代码中的原因并不是很多。如果您使用像PHP这样的服务器端工具(或几乎任何东西)构建JavaScript源代码作为HTML文档的一部分,JSON可以作为普通的JavaScript对象初始化程序放入JavaScript源代码中,而无需额外的层引号使它看起来像一个JavaScript字符串常量。