用JSON.parse()转义

Syl*_*ain 2 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>
Run Code Online (Sandbox Code Playgroud)

转义字符是单词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
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 5

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

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

因为有\"必要使用三个 \字符,所以当JSON解析器看到它时\".

请注意,没有必要\在服务器发送到客户端(或客户端发送到服务器)的实际 JSON中添加额外的内容.

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