Почему Слэш является беглым персонажем в JSON? [дубликат]

Возможные Дубликаты:
JSON:почему сбежали косые черты?

json.org утверждает, что Слэш (ака Солидус /) можно избежать:

"/"

тем не менее, unescaped косые черты также действительны:

"/"

что рациональное за этим? Происходит ли это из корней Javascript? (Т. е., "</script>" проблема в Javascript на основе браузера, см. комментарий Дугласа Крокфорда) или есть какая-то другая причина?

2 ответов


Я только что опубликовал обсуждения этого вопроса на моем блоге. Думаю, вы правы, это единственная причина. Также обратите внимание, что косая черта является единственным стандартным символом, который можно экранировать.

обычно кодеры JSON делают это неправильно и избегают любой косой черты, которую они находят по пути, в то время как только косая черта в </script> должен быть экранирован, и, возможно, все те, которые соответствуют регулярному выражению JavaScript /<\/\w+/, по той же причине.

EDIT: исправлена ссылка на блог.


Кажется, моя первая мысль была правильной.

'\/' === '/' в JavaScript и JSON почти is допустимый 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.