SyntaxError: Bad escaped character in JSON at position N bedeutet, dass innerhalb eines Strings ein Backslash (\) steht, gefolgt von etwas, das JSON nicht als gültiges Escape erkennt. JSON erlaubt nur eine kleine, feste Menge an Escape-Sequenzen —— alles andere nach einem \ löst diesen Fehler aus. Hier die vollständige Liste und wie man ihn behebt.
Welchen String-Fehler habe ich?
- Bad escaped character —— auf einen
\folgt etwas, das JSON nicht erlaubt (z. B.\x, Windows-Pfade). - Bad control character —— ein rohes Tab/Newline/Null-Byte steht innerhalb eines Strings ohne Escape.
- Unterminated string —— ein String wurde mit
"geöffnet, aber nie geschlossen.
Wie der Fehler aussieht
// V8 (Chrome / Node / Edge)
SyntaxError: Bad escaped character in JSON at position 14
// Firefox
SyntaxError: JSON.parse: bad escaped character at line 1 column 15 of the JSON data
// Safari
SyntaxError: JSON Parse error: Invalid escape character \xDie einzigen Escapes, die JSON erlaubt
Innerhalb eines JSON-Strings darf auf einen Backslash genau eines von Folgendem folgen:
\" doppeltes Anführungszeichen
\\ Backslash
\/ Schrägstrich
\b Backspace
\f Form Feed
\n Newline
\r Carriage Return
\t Tab
\uXXXX ein Unicode-Codepoint (exakt 4 Hex-Ziffern) Alles andere nach einem \ —— \x, \', \a, \0, ein Windows-Pfad wie \Users oder ein verstümmeltes \u12 —— gilt als „bad escaped character“.
Warum es passiert
Ursache 1 —— Escapes aus anderen Sprachen geliehen
// ❌ \x und \' sind in JS/Python gültig, in JSON nicht
{ "code": "\x1b[0m", "name": "O\'Brien" }
// ✅ ein \u-Escape für das Byte, Apostrophe nicht escapen
{ "code": "\u001b[0m", "name": "O'Brien" }Ursache 2 —— Windows-Dateipfade
// ❌ jeder Backslash beginnt ein ungültiges Escape
{ "path": "C:\Users\Ada\file.json" }
// ✅ jeden Backslash escapen (oder Schrägstriche verwenden)
{ "path": "C:\\Users\\Ada\\file.json" }
{ "path": "C:/Users/Ada/file.json" }Ursache 3 —— Abgeschnittenes oder fehlerhaftes \u-Escape
// ❌ \u braucht genau 4 Hex-Ziffern
{ "char": "\u12" }
// ✅
{ "char": "\u0012" }Surrogate-Paare und Zeichen außerhalb der BMP
Das \uXXXX-Escape von JSON ist auf 4 Hex-Ziffern festgelegt und adressiert Codepoints bis U+FFFF (Basic Multilingual Plane). Zeichen darüber —— Emojis, viele CJK-Erweiterungen, mathematische Symbole —— müssen als UTF-16-Surrogate-Paar geschrieben werden:
// 😀 (U+1F600) als Surrogate-Paar
"\uD83D\uDE00"
// nicht erlaubt —— JSON hat weder \U noch \u{...}
"\u1F600" // ungültiges Escape (nur die ersten 4 Hex-Ziffern werden konsumiert; der Rest ist Text)
"\u{1F600}" // ungültiges EscapeDas ist die Kodierung von JSON in UTF-16-Form, auch wenn die Datei auf der Platte UTF-8 ist. Zwei praktische Folgen:
- UTF-8 in der Datei ist in Ordnung. Sie können
"😀"wörtlich schreiben; moderne Parser handhaben das. Die Surrogate-Paar-Form ist nur nötig, wenn Sie escapen müssen. - Achten Sie auf einsame Surrogates. Ein
\uD83Dohne passendes Low-Surrogate (oder umgekehrt) ist technisch von JSON erlaubt, aber fehlerhaftes UTF-16 —— nachgelagerte Konsumenten (besonders Postgresjsonb) lehnen es ab.JSON.stringifyerzeugt nur wohlgeformte Paare.
Wie man es behebt —— Schritt für Schritt
- Zur gemeldeten Position springen und den
\vor einem ungültigen Zeichen finden. - Verirrter Backslash? (z. B. ein Windows-Pfad) —— verdoppeln Sie ihn zu
\\, oder steigen Sie auf Schrägstriche um. - Fremdes Escape wie
\xoder\'? —— wandeln Sie\xNNin\u00NNum und entfernen Sie den Backslash vor'. - Kurzes
\u? —— auf exakt vier Hex-Ziffern auffüllen. - Beste Korrektur: Bauen Sie das JSON mit
JSON.stringify(), das nur gültige Escapes erzeugt.
// Prävention —— korrektes Escapen ist automatisch
JSON.stringify({ path: 'C:\\Users\\Ada', code: '\x1b[0m' });
// → {"path":"C:\\Users\\Ada","code":"\u001b[0m"}Häufig gestellte Fragen
Was bedeutet „Bad escaped character in JSON“?
Auf einen Backslash innerhalb eines Strings folgt ein Zeichen, das nicht zu den von JSON erlaubten Escapes (" \\ / b f n r t oder \uXXXX) gehört. Häufige Übeltäter sind \x, \' und nicht escapte Windows-Pfade.
Wie schreibe ich einen Windows-Pfad in JSON?
Verdoppeln Sie jeden Backslash (C:\\\\Users), damit jeder ein gültiges \\-Escape ist, oder verwenden Sie Schrägstriche (C:/Users), die JSON akzeptiert.
Ist das dasselbe wie „Bad control character“?
Nein. „Bad escaped character“ geht um eine ungültige Sequenz nach einem Backslash; „bad control character“ geht um ein rohes, nicht escaptes Steuerbyte (Tab, Newline) ohne irgendeinen Backslash.
Jetzt beheben
- JSON Fix —— ungültige Escapes im Browser finden und reparieren
- Bad Control Character im String-Literal in JSON —— rohe Steuerbytes vs. Escapes
- Nicht abgeschlossener String in JSON —— wenn ein String nie geschlossen wird
- JSON.parse „Unexpected Token“-Fehler beheben —— der umfassendere Fehlerleitfaden