475 Stimmen

JSON: Warum werden Schrägstriche escaped?

Der Grund dafür "entgeht" mir.

JSON entgeht der Schrägstrich, so dass eine Raute {a: "a/b/c"} wird serialisiert als {"a":"a\/b\/c"} anstelle von {"a":"a/b/c"} .

Warum?

368voto

Ruben Punkte 14679

JSON verlangt das nicht, es erlaubt es. Es erlaubt Ihnen auch die Verwendung von " \u0061 " für "A", aber das ist nicht erforderlich, wie Harold L. betont:

In der JSON-Spezifikation heißt es, dass Sie den Schrägstrich umgehen KÖNNEN, aber Sie müssen es nicht.

Harold L antwortete am 16. Oktober '09 um 21:59 Uhr

Erlauben \/ hilft beim Einbetten von JSON in eine <script> Tag, der es nicht erlaubt </ innerhalb von Strings, wie Seb betont:

Das liegt daran, dass HTML keine Zeichenkette innerhalb einer <script> Tag zu enthalten </ Falls diese Teilzeichenkette vorhanden ist, sollten Sie also jeden Schrägstrich auslassen.

Seb antwortete am 16. Oktober '09 um 22:00 Uhr (#1580667)

Einige von Microsofts ASP.NET Ajax/JSON-APIs nutzen dieses Schlupfloch, um zusätzliche Informationen hinzuzufügen, z. B. wird eine Datumsangabe als "\/Date(milliseconds)\/" . (Igitt)

52voto

Harold L Punkte 5058

In der JSON-Spezifikation heißt es, dass Sie den Schrägstrich umgehen KÖNNEN, aber Sie müssen es nicht.

27voto

Simon East Punkte 50819

PHP bricht Schrägstriche standardmäßig ab Das ist wahrscheinlich der Grund, warum dies so häufig vorkommt. Ich bin mir nicht sicher, warum, aber möglicherweise, weil die Einbettung der Zeichenfolge "</script>" innerhalb einer <script> Tag wird als unsicher angesehen.

Diese Funktionalität kann durch die Übergabe des Parameters JSON_UNESCAPED_SLASHES Flag, aber die meisten Entwickler werden dies nicht verwenden, da das ursprüngliche Ergebnis bereits gültiges JSON ist.

22voto

Boldewyn Punkte 78567

Pregunté die gleiche Frage vor einiger Zeit und musste sie selbst beantworten. Hier ist, was ich herausgefunden habe:

Es scheint, mein erster Gedanke [ dass es von seinem JavaScript Wurzeln ] war richtig.

'\/' === '/' in JavaScript, und JSON es gültiges JavaScript. Wie auch immer, warum sind die anderen ignorierten Escapes (wie \z ) in JSON nicht erlaubt?

Der Schlüssel dazu war das Lesen http://www.cs.tut.fi/~jkorpela/www/revsol.html gefolgt von http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.2 . Das Merkmal der des Slash-Escape ermöglicht die Einbettung von JSON in HTML (als SGML) und XML.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X