如果我在 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/