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)
当您在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字符串常量.