为什么在JSON中斜杆是可转义字符?

28

json.org 显示,斜杠(也称为正斜杠,/)可以进行转义:

"\/"

然而,未转义的斜杠也是合法的:

"/"

这背后的原理是什么?它是否来自JavaScript的根源?(即,"</script>" 在基于浏览器的JavaScript中是一个问题,请参见 Douglas Crockford的评论)。或者它有其他原因吗?


它确实源于</script>标签。您可以在此处查看JSON规范的创始人Douglas Crockford为此提出的理由(https://youtu.be/-C-JoyNuQJs?t=386)。 - Oliver Sieweke
2个回答

11

类似于\b在JSON中用于表示退格,如果使用\z来表示z会让事情变得混乱。 - remmy

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

通常JSON编码器会做错,并转义它们沿途找到的任何斜杠,而只有</script>中的斜杠应该被转义,也许所有与JavaScript RegExp /<\/\w+/匹配的斜杠都应该被转义,出于同样的原因。


嗯,有趣。但是你也不巧知道这个假设的来源吧? - Boldewyn
请注意,斜杠(/)不是唯一允许转义的标准字符。实际上,所有字符都可以通过其他方法进行转义。 - remmy
1
我认为我更喜欢使用JSON编码器来做“错误”的事情,因为这样可以使事情更加一致。 - Johannes Riecken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接