2010-11-24 9 views
18

Duplicar posible:
JSON: why are forward slashes escaped?¿Por qué la barra es un carácter escabroso en JSON?

json.org estados, que las barras (también conocido como Solidus, /) se pueden escapar:

"\/" 

Sin embargo, las barras sin escape son válidos, también:

"/" 

¿Cuál es la razón detrás de esto? ¿Viene de las raíces de Javascript? (Es decir, "</script>" es un problema en Javascript basado en navegador, consulte Douglas Crockford's comment) ¿O tiene alguna otra razón?

+0

Sí, es cierto. Gracias por encontrar el otro. Votando para cerrarlo. – Boldewyn

+0

Otros lectores navegando a lo largo: ¿Votarías tú también para cerrarlo como duplicado de 1580647? – Boldewyn

Respuesta

2

Parece, mi primer pensamiento fue correcto.

'\/' === '/' en JavaScript, y JSON almostes JavaScript válido. Sin embargo, ¿por qué los otros escapes ignorados (como \z) no están permitidos en JSON?

La clave para esto fue leer http://www.cs.tut.fi/~jkorpela/www/revsol.html, seguido de http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.2. La característica del escape de barra permite que JSON se incruste en HTML (como SGML) y XML.

+0

Las cosas como \ b se usan para el retroceso en JSON, lo que permite que \ z for z haga las cosas confusas. – kyrias

6

Acabo de publicar a review of this issue en mi blog. Creo que tienes razón, esa es la única razón. También tenga en cuenta que la barra inclinada es el único carácter estándar que se permite escapar.

Por lo general, los codificadores JSON haces mal y escapar cualquier barra que encuentran en el camino, mientras que sólo la barra de </script> debe ser escapado, y tal vez todas las coincidentes por el JavaScript RegExp /<\/\w+/, por la misma razón.

EDITAR: enlace de blog fijo.

+0

Hm, interesante. ¿Pero tú tampoco sabes la fuente de la suposición? – Boldewyn

+0

No, no lo siento, lo siento. – Ando

+0

"También tenga en cuenta que la barra oblicua es el único carácter estándar que se permite escapar". kyrias

Cuestiones relacionadas