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? (I.e., "</script>"
is a problem in browser-based Javascript, see Douglas Crockford's comment) Or has it any other reason?
This is because HTML does not allow a string inside a <script> tag to contain </ , so in case that substring's there, you should escape every forward slash.
The following characters are invalid when used in a JSON key: " (double quote) – It must be escaped. \ (backslash) – It must be used to escape certain characters. all control characters like \n , \t.
JSON only allows a select few characters to be escaped to avoid ambiguities in the way eval works to unpack JSON -- '\v' is a vertical tab in most interpreters but the letter 'v' in others. The solidus is among the set of characters that MAY be escaped so that JSON can be embedded.
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#h-B.3.2. The feature of the slash escape allows JSON to be embedded in HTML (as SGML) and XML.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With