Bad escaped character in JSON at position N (line L column C)
JSON erlaubt genau neun Escape-Sequenzen: \" \\ \/ \b \f \n \r \t und \uXXXX. Alles andere nach einem Backslash ist ein Fehler. Ein einzelner Backslash in einem Windows-Pfad ist fast immer die Ursache, denn \U, \P und \D sind keine Escapes.
Fügen Sie Ihr JSON ein und sehen Sie genau, wo es bricht
Nichts, was Sie einfügen, verlässt Ihren Browser. Die connect-src Erlaubnisliste macht daraus eine Garantie des Browsers statt eines Versprechens. Selbst überprüfen
Was es tatsächlich auslöst
Sortiert danach, wie oft sich das jeweilige als die Antwort herausstellt.
-
01 Ein Windows-Dateipfad mit einfachen Backslashes
Das ist die häufigste Ursache. Jeder Backslash in einer JSON-Zeichenkette muss verdoppelt werden. Schrägstriche funktionieren unter Windows in den meisten Zusammenhängen ebenfalls und vermeiden das Problem ganz.
Geht kaputt
{ "path": "C:\Users\priya\config.json" }Funktioniert
{ "path": "C:\\Users\\priya\\config.json" } -
02 Ein aus einer anderen Sprache entliehenes Hex-Escape
JSON hat kein \x-Escape. C, Python und JavaScript akzeptieren alle \x41 für den Buchstaben A; JSON verlangt \u0041.
Geht kaputt
{ "c": "\x41" }Funktioniert
{ "c": "\u0041" } -
03 Ein in eine Zeichenkette eingefügter regulärer Ausdruck
Muster wie \d, \s und \w sind keine JSON-Escapes. Jeder Backslash im Muster muss verdoppelt werden, bevor er in eine JSON-Zeichenkette wandert.
Geht kaputt
{ "pattern": "^\d{3}-\d{4}$" }Funktioniert
{ "pattern": "^\\d{3}-\\d{4}$" } -
04 Ein Escape für das einfache Anführungszeichen
\' ist in JavaScript und JSON5 gültig, in JSON nicht. Innerhalb einer Zeichenkette in doppelten Anführungszeichen braucht ein Apostroph überhaupt kein Escape.
Derselbe Fehler in anderen Laufzeitumgebungen
Das zugrunde liegende Problem ist identisch; nur der Wortlaut unterscheidet sich. Meldet eine Kollegin eine dieser Zeilen, sieht sie genau dasselbe wie Sie.
| Python | Invalid \escape: line 1 column 9 (char 8) |
|---|
Häufige Fragen
- Warum sieht meine Python-Zeichenkette richtig aus und schlägt trotzdem fehl?
- Weil der Backslash zweimal verbraucht wird: einmal vom Python-String-Literal und einmal von JSON. Verwenden Sie ein Raw-String-Literal, oder bauen Sie das Objekt und rufen Sie json.dumps auf, statt JSON von Hand zu schreiben.
- Ist \/ wirklich erlaubt?
- Ja. Einen Schrägstrich zu escapen ist in JSON optional, und beide Formen meinen dasselbe Zeichen. Es existiert, damit JSON gefahrlos in ein script-Tag in HTML eingebettet werden kann, wo die Folge </ das Element beenden würde.
Jetzt beheben
Fügen Sie das Payload in das Werkzeug oben ein, oder gehen Sie direkt zu dem, das für diesen Zweck gebaut wurde.
Eine Zeichenkette korrekt escapen