javascript - 为什么 JSON 标准中的字符串中不允许使用双引号和反斜杠?

标签 javascript json

如果我在 Chrome 或 Firebug 的 JavaScript 控制台中运行它,它工作正常。

JSON.parse('"\u0027"') // Escaped single-quote

但如果我在 Javascript 控制台中运行这两行中的任何一行,它就会抛出错误。

JSON.parse('"\u0022"') // Escaped double-quote
JSON.parse('"\u005C"') // Escaped backslash

RFC 4627 section 2.5似乎暗示 \" 是允许的字符,只要它们被正确转义。我试过的 2 个浏览器似乎不允许它,但是。我在这里做错了什么或者它们真的不允许出现在字符串中吗?我也尝试过使用 \"\\ 代替 \u0022\u005C 分别。

我觉得我只是在做一些非常错误的事情,因为我很难相信 JSON 不允许在字符串中使用这些字符,特别是因为规范似乎没有提到任何我能找到的说它们的东西'不允许。

最佳答案

你需要引用反斜杠!

that which we call a rose

By any other name would smell as sweet

双引号就是双引号,不管你在字符串常量中怎么表达。如果您在常量内的 \u 表达式之前放置一个反斜杠,那么效果就是反斜杠加引号的双引号,这实际上就是您所得到的。

关于你的问题,最有趣的是它帮助我意识到我写过的每个 JavaScript 字符串解析器都是错误的。

关于javascript - 为什么 JSON 标准中的字符串中不允许使用双引号和反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4576841/

相关文章:

javascript - React/Redux/Immutable.js - 不可变操作(错误 : Actions must be plain objects)

javascript - 通过使用apply调用带有参数列表的构造函数来实例化一个对象?

javascript - 如果 URL 相同,则将选项值更改为已选择

javascript - 追加新文件

javascript - 如何计算路径上两点之间的距离?

ruby-on-rails - JSON、response_with 和嵌套资源路由错误?

php - 在 PHP 中的对象上使用 json_encode(无论范围如何)

java - 旧版 Android 中的 JSON 解码问题

node.js - Webpack/babel 意外 token ,预期为 ";"

json - 在 Azure 数据工厂中读取变量 JSON 时出现问题