为什么斜杠是JSON中可逃避的角色?

Bol*_*wyn 23 json specifications escaping slash

可能重复:
JSON:为什么正斜杠被转义?

json.org指出,正斜杠(又名solidus /)可以被转义:

"\/"
Run Code Online (Sandbox Code Playgroud)

但是,未转义的斜杠也是有效的:

"/"
Run Code Online (Sandbox Code Playgroud)

这背后的理性是什么?它来自Javascript根源吗?(即,"</script>"基于浏览器的Javascript中存在问题,请参阅Douglas Crockford的评论)或者有任何其他原因吗?

aer*_*ino 6

我刚刚在我的博客上发表了对此问题的评论.我认为你是对的,这是唯一的原因.另请注意,斜杠是唯一允许转义的标准字符.

通常JSON编码器做错了并且在路上找不到它们找到的任何斜杠,而只有斜杠才</script>应该被转义,并且可能所有匹配的JavaScript RegExp /<\/\w+/,出于同样的原因.

编辑:修复博客链接.


Bol*_*wyn 5

看来,我的第一个想法是正确的。

'\/' === '/'在 JavaScript 中,JSON几乎 有效的 JavaScript。但是,为什么\zJSON 中不允许其他忽略的转义(如)?

关键是阅读http://www.cs.tut.fi/~jkorpela/www/revsol.html,然后是http://www.w3.org/TR/html4/appendix/notes.html#hB .3.2 . 斜线转义的特性允许将 JSON 嵌入到 HTML(如 SGML)和 XML 中。