2010-11-24 2 views
18

가능한 중복 :
JSON: why are forward slashes escaped?JSON에서 슬래시가 이스케이프 할 수있는 문자 인 이유는 무엇입니까?

json.org 상태는, 그 슬래시는 (일명 상선, /)를 탈출 할 수 있습니다

"\/" 

그러나, 이스케이프 슬래시가 유효하며, too

"/" 

무엇이 합리적인 이유입니까? Javascript의 뿌리에서 나온 것입니까? (즉, "</script>"은 브라우저 기반 자바 스크립트에서 문제입니다 (Douglas Crockford's comment 참조). 아니면 다른 이유가 있습니까?

+0

네, 맞습니다. 다른 하나를 찾아 주셔서 감사합니다. 그것을 닫는 투표. – Boldewyn

+0

다른 독자들이 함께 탐색 : 1580647의 사본으로 닫으시겠습니까? – Boldewyn

답변

2

내 첫 번째 생각은 맞았다.

'\/' === '/' JavaScript 및 JSON almost 유효한 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에 포함 할 수 있습니다.

+0

JSON의 백 스페이스에 \ b와 (와) 비슷한 항목이 사용되므로 \ z를 사용하면 혼란 스러울 수 있습니다. – kyrias

6

블로그에 a review of this issue을 방금 게시했습니다. 나는 네가 옳다고 생각한다. 그것이 유일한 이유이다. 또한 슬래시는 이스케이프 할 수있는 유일한 표준 문자입니다.

일반적으로 JSON 인코더는 잘못 처리하여 슬래시를 도주하지만 </script>의 슬래시 만 이스케이프 처리해야하며 동일한 이유로 JavaScript RegExp /<\/\w+/과 일치하는 모든 문자를 이스케이프 처리해야합니다.

EDIT : 고정 블로그 링크.

+0

흠, 흥미 롭습니다. 그러나 당신도 역시 그 가정에 대한 근원을 알지 못합니까? – Boldewyn

+0

아니, 미안. 미안. – Ando

+0

"슬래시 만 이스케이프 할 수있는 유일한 표준 문자입니다." <틀렸어. 모든 문자는 다른 방법을 통해 이스케이프 처리 될 수 있습니다. – kyrias

관련 문제