2010-11-24 2 views
18

Mögliche Duplizieren:
JSON: why are forward slashes escaped?Warum ist der Schrägstrich in JSON ein Escapable-Zeichen?

json.org Staaten, dass die Vorwärts-Schrägstriche (aka Solidus, /) kann entkommen werden:

"\/" 

sind jedoch unescaped Schrägstriche gültig, auch:

"/" 

Was ist der Grund dafür? Kommt es von den Javascript-Wurzeln her? (Ie., "</script>" ist ein Problem in Browser-basierten Javascript, siehe Douglas Crockford's comment) Oder hat es einen anderen Grund?

+0

Ja, das stimmt. Danke, dass du den anderen gefunden hast. Wählen, um es zu schließen. – Boldewyn

+0

Andere Leser, die mitsingen: Würden Sie auch dafür stimmen, es als Duplikat von 1580647 zu schließen? – Boldewyn

Antwort

2

Es scheint, mein erster Gedanke war richtig.

'\/' === '/' in JavaScript und JSON almostist gültige JavaScript. Warum sind jedoch die anderen ignorierten Escapes (wie \z) in JSON nicht erlaubt?

Der Schlüssel hierfür war http://www.cs.tut.fi/~jkorpela/www/revsol.html, gefolgt von http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.2. Die Eigenschaft des Schrägstrich-Escapes ermöglicht es, JSON in HTML (als SGML) und XML zu integrieren.

+0

Dinge wie \ b werden in JSON für die Rücktaste verwendet, sodass \ z for z verwirrend wirken würde. – kyrias

6

Ich habe gerade a review of this issue auf meinem Blog veröffentlicht. Ich denke du hast recht, das ist der einzige Grund. Beachten Sie auch, dass der Schrägstrich das einzige Standardzeichen ist, das als Escape-Zeichen zulässig ist.

Normalerweise JSON-Encoder tun es falsch und entziehen sich jeglicher slash sie auf dem Weg zu finden, während nur der Schrägstrich in </script> entkommen werden sollte, und vielleicht alle von der JavaScript RegExp abgestimmt diejenigen /<\/\w+/, aus dem gleichen Grund.

EDIT: feste Blog-Link.

+0

Hm, interessant. Aber wissen Sie auch nicht zufällig die Quelle für die Annahme? – Boldewyn

+0

Nein, tut mir leid, tut mir leid. – Ando

+0

"Beachten Sie auch, dass der Schrägstrich das einzige Standardzeichen ist, das erlaubt ist, zu maskieren." kyrias

Verwandte Themen