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

时间:2010-11-24 08:49:20

标签: json escaping specifications slash

  

可能重复:
  JSON: why are forward slashes escaped?

json.org状态,正斜杠(又名solidus,/)可以转义:

"\/"

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

"/"

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

2 个答案:

答案 0 :(得分:6)

我刚刚在我的博客上发布了a review of this issue。我认为你是对的,这是唯一的原因。另请注意,斜杠是唯一允许转义的标准字符。

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

编辑:修复博客链接。

答案 1 :(得分:3)

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

JavaScript中的

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

关键是阅读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。