json.org 显示,斜杠(也称为正斜杠,/
)可以进行转义:
"\/"
然而,未转义的斜杠也是合法的:
"/"
这背后的原理是什么?它是否来自JavaScript的根源?(即,"</script>"
在基于浏览器的JavaScript中是一个问题,请参见 Douglas Crockford的评论)。或者它有其他原因吗?
json.org 显示,斜杠(也称为正斜杠,/
)可以进行转义:
"\/"
然而,未转义的斜杠也是合法的:
"/"
这背后的原理是什么?它是否来自JavaScript的根源?(即,"</script>"
在基于浏览器的JavaScript中是一个问题,请参见 Douglas Crockford的评论)。或者它有其他原因吗?
看起来,我的第一想法是正确的。
'\/' === '/'
在JavaScript中是相等的,并且JSON几乎是有效的JavaScript。然而,为什么其他被忽略的转义字符(例如\z
)在JSON中不允许呢?
这个答案可以在http://www.cs.tut.fi/~jkorpela/www/revsol.html和http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.2中找到。斜杠转义的特性允许将JSON嵌入到HTML(作为SGML)和XML中。
通常JSON编码器会做错,并转义它们沿途找到的任何斜杠,而只有</script>
中的斜杠应该被转义,也许所有与JavaScript RegExp /<\/\w+/
匹配的斜杠都应该被转义,出于同样的原因。
</script>
标签。您可以在此处查看JSON规范的创始人Douglas Crockford为此提出的理由(https://youtu.be/-C-JoyNuQJs?t=386)。 - Oliver Sieweke