← Alle Artikel

Nicht beendeter String in JSON: Ursachen und Fixes

Ein nicht beendeter String in JSON heißt: einem öffnenden Anführungszeichen fehlt das schließende — meist eine nicht escapete Quote, ein roher Zeilenumbruch oder abgeschnittene Daten. Kaputte und reparierte Beispiele.

SyntaxError: Unterminated string in JSON at position N bedeutet, dass der Parser begonnen hat, einen String zu lesen (ein öffnendes " gesehen) und das Eingabeende —— oder einen Zeilenumbruch —— erreicht hat, bevor er das schließende " gefunden hat. Der String wurde nie geschlossen. Hier sind die Ursachen und wie man es behebt.

Welchen String-Fehler habe ich?

Wie der Fehler aussieht

// V8 (Chrome / Node / Edge)
SyntaxError: Unterminated string in JSON at position 27

// Firefox
SyntaxError: JSON.parse: unterminated string at line 2 column 10 of the JSON data

// Safari
SyntaxError: JSON Parse error: Unterminated string

Die Position zeigt auf (oder direkt nach) das öffnende Anführungszeichen des nie geschlossenen Strings —— arbeiten Sie von dort nach vorne.

Warum es passiert

Ursache 1 —— Ein nicht escaptes Anführungszeichen schließt den String zu früh

Ein wörtliches " im Wert schließt den String vorzeitig; der Rest der Zeile wird als unerwartete Tokens gelesen, und der eigentliche String bleibt „offen“.

// ❌ kaputt —— das Anführungszeichen vor hello schließt "He said "
{ "note": "He said "hello" to her" }

// ✅ behoben —— innere Anführungszeichen mit Backslash escapen
{ "note": "He said \"hello\" to her" }

Ursache 2 —— Ein roher Zeilenumbruch im String

JSON-Strings dürfen keine rohen Zeilenumbrüche enthalten. Ein wörtlicher Umbruch beendet den String und lässt ihn ungeschlossen.

// ❌ kaputt —— echter Zeilenumbruch im String
{ "bio": "line one
line two" }

// ✅ behoben —— \n-Escape verwenden, kein roher Umbruch
{ "bio": "line one\nline two" }

Ursache 3 —— Abgeschnittene Daten

Eine Antwort, die mitten im String abbricht (Verbindungsabbruch, Buffer-/Größenlimit, partielles Lesen), lässt am Ende der Eingabe einen offenen String zurück.

// was angekommen ist (Verbindung abgebrochen):
{"user":{"name":"Ada Lovel
// → Unterminated string

Wie man es behebt —— Schritt für Schritt

  1. Springen Sie zur gemeldeten Position und finden Sie das öffnende " ohne passendes schließendes.
  2. Suchen Sie ein nicht escaptes " im Wert —— escapen Sie es zu \".
  3. Suchen Sie einen rohen Zeilenumbruch/Tab im Wert —— ersetzen Sie ihn durch \n / \t.
  4. Prüfen Sie auf Abschneiden —— vergleichen Sie die Bytelänge mit Content-Length; wenn kürzer, wurden die Daten abgeschnitten (Code-Fix, kein Text-Fix).
  5. Hören Sie auf, JSON von Hand zu bauen. Verwenden Sie JSON.stringify(), das Anführungszeichen und Steuerzeichen für Sie escaped.
// Prävention: niemals Strings zu JSON konkatenieren
const json = JSON.stringify({ note: userInput }); // immer gültig

Häufig gestellte Fragen

Was verursacht „Unterminated string in JSON“?

Ein öffnendes " ohne passendes schließendes " —— meist ein nicht escaptes Anführungszeichen im Wert, ein roher Zeilenumbruch oder eine Antwort, die mitten im String abgeschnitten wurde.

Wie binde ich ein Anführungszeichen oder einen Zeilenumbruch in einen JSON-String ein?

Escapen Sie sie: \" für doppeltes Anführungszeichen, \n für Newline, \t für Tab. Wenn Sie das JSON mit JSON.stringify() bauen, geschieht das automatisch.

Ist das dasselbe wie „Unexpected end of JSON input“?

Verwandt, aber unterschiedlich. „Unterminated string“ heißt, dass ein String offen ist; „Unexpected end of JSON input“ heißt, dass die ganze Struktur (Objekt/Array) vorzeitig zu Ende ging. Abgeschnittene Antworten können beide auslösen.

Jetzt beheben