我正在尝试在 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/