Why is the slash an escapable character in JSON?

Possible Duplicate:
JSON: why are forward slashes escaped?

json.org states, that forward slashes (aka solidus, / ) can be escaped:

"/"

However, unescaped slashes are valid, too:

"/"

What's the rational behind this? Does it come from the Javascript roots? (Ie, "</script>" is a problem in browser-based Javascript, see Douglas Crockford's comment) Or has it any other reason?


I've just published a review of this issue on my blog. I think you are right, that's the only reason. Also note that the slash is the only standard character allowed to be escaped.

Usually JSON encoders do it wrong and escape any slash they find along the way, while only the slash in </script> should be escaped, and maybe all the ones matched by the JavaScript RegExp /</w+/ , for the same reason.

EDIT: fixed blog link.


It seems, my first thought was correct.

'/' === '/' in JavaScript, and JSON almost is valid JavaScript. However, why are the other ignored escapes (like z ) not allowed in JSON?

The key for this was reading http://www.cs.tut.fi/~jkorpela/www/revsol.html, followed by http://www.w3.org/TR/html4/appendix/notes.html#hB.3.2. The feature of the slash escape allows JSON to be embedded in HTML (as SGML) and XML.

链接地址: http://www.djcxy.com/p/8398.html

上一篇: JSON序列化为字符串的枚举

下一篇: 为什么斜杠是JSON中的一个易变字符?