CodeKitHub
Deutsch
Behebung des Fehlers „Unerwartetes Token“ in JSON.parse: Ein Leitfaden zu allen Ursachen

Behebung des Fehlers „Unerwartetes Token“ in JSON.parse: Ein Leitfaden zu allen Ursachen

Veröffentlicht am 23. Juli 2026

SyntaxError: Unexpected token X in JSON at position N ist einer der häufigsten Fehler in JavaScript und zugleich einer der wenig hilfreichsten – er gibt zwar an, wo der Parser aufgegeben hat, aber nicht, warum. Hier erfahren Sie, wie Sie den Fehler tatsächlich beheben können.

Schritt 1: Die Positionsnummer auslesen

JSON.parse zählt die Zeichen ab dem Anfang der Zeichenkette, beginnend bei 0. Wenn Ihr JSON aus einer Variablen stammt, protokollieren Sie zunächst den genauen Ausschnitt um diese Position herum, bevor Sie irgendetwas anderes tun:

try {
JSON.parse(raw);
} catch (e) {
const match = e.message.match(/position (\d+)/);
if (match) {
const pos = Number(match[1]);
console.log(raw.slice(Math.max(0, pos - 20), pos + 20));
}
}

Dieser eine Codeausschnitt löst mehr solcher Fehler als jeder Ratschlag zur JSON-Syntax, denn die meisten „unexpected token“-Fehler sind in Wirklichkeit „Ich weiß nicht, was meine Zeichenkette tatsächlich enthält“-Fehler – nachgestellte Leerzeichen durch Kopieren und Einfügen, ein zusätzlicher Zeilenumbruch aus einem Template-Literal oder ein Byte-Order-Mark (BOM) ganz am Anfang (Position 0, Token , das in den meisten Editoren unsichtbar ist).

Die 7 Ursachen, geordnet nach ihrer tatsächlichen Häufigkeit

  1. Abschließendes Komma. {"a": 1, "b": 2,} – gültig in JS-Objektliteralen, ungültig in JSON. Das Komma vor } oder ] ist die mit Abstand häufigste Ursache.
  2. Einfache Anführungszeichen statt doppelter Anführungszeichen. {'a': 1} ist JS, kein JSON. JSON erfordert doppelte Anführungszeichen sowohl um Schlüssel als auch um Zeichenfolgenwerte, ohne Ausnahmen.
  3. Schlüssel ohne Anführungszeichen. {a: 1} – auch hier: gültiges JS, ungültiges JSON. Jeder Schlüssel muss in Anführungszeichen stehen.
  4. Ein JS-Wert, der kein gültiges JSON ist. undefined, NaN, eine Funktion oder ein Kommentar ( // like this) – nichts davon kommt in der JSON-Spezifikation vor, sondern nur in JavaScript.
  5. Doppelte Kodierung. Sie haben JSON.stringify() zweimal aufgerufen oder Sie analysieren eine Zeichenkette, die bereits ein Objekt ist – überprüfen Sie dies mit typeof raw === 'string', bevor Sie .parse() aufrufen.
  6. Eine leere Zeichenkette oder eine undefined -Antwort. Wenn ein Abruf stillschweigend fehlgeschlagen ist oder einen leeren Body zurückgegeben hat, löst JSON.parse("") den Fehler Unexpected end of JSON input aus, einen anderen, aber damit zusammenhängenden Fehler – überprüfen Sie response.ok und protokollieren Sie den Roh-Body vor dem Parsen.
  7. BOM oder unsichtbare Zeichen beim Kopieren und Einfügen. Beim Einfügen von JSON aus einer PDF-Datei, einem Word-Dokument oder einer Terminalausgabe können ein BOM oder ein geschütztes Leerzeichen enthalten, das einem normalen Zeichen zum Verwechseln ähnlich sieht.

Die schnellste Lösung: Validieren Sie, bevor Sie debuggen

Das zeichenweise Durchlesen roher Fehlermeldungen ist zeitaufwendig. Fügen Sie die genaue Zeichenfolge in einen Formatter ein, der das ungültige Zeichen direkt hervorhebt, anstatt anhand einer Positionsnummer zu raten – so wird aus „irgendwo in der Nähe von Zeichen 812“ ein „genau diese fehlende Klammer, genau hier“. (Link siehe unten.)

Wenn das JSON tatsächlich gültig ist, aber dennoch fehlschlägt

Wenn ein Formatierer bestätigt, dass Ihr JSON syntaktisch korrekt ist und JSON.parse trotzdem einen Fehler auslöst, ist die von Ihnen übergebene Zeichenfolge nicht die, für die Sie sie halten. Der häufigste Grund: Sie rufen .parse() auf ein Response-Objekt auf, anstatt auf dessen aufgelösten Body.

// Wrong — parses "[object Response]", not the body
const data = JSON.parse(await fetch(url));

// Right
const data = await (await fetch(url)).json();
// or, if you need the raw text first:
const text = await (await fetch(url)).text();
const data = JSON.parse(text);

Kurzübersicht

Symptom Mögliche Ursache
Unexpected token } Abschließendes Komma vor der schließenden Klammer
Unexpected token ' Verwendung von einfachen Anführungszeichen anstelle von doppelten Anführungszeichen
Unexpected token a (oder ein beliebiger Buchstabe) Nicht in Anführungszeichen gesetzter Objektschlüssel
Unexpected end of JSON input Leere Zeichenkette, abgeschnittene Antwort oder nicht geschlossene Klammer
Unexpected token  (Position 0) Byte-Order-Mark aus einer kopierten und eingefügten oder unter Windows gespeicherten Datei

Für nichts davon muss man sich etwas merken – die Behebung erfolgt immer in denselben drei Schritten: Protokollieren Sie den Ausschnitt um die gemeldete Position herum, lassen Sie ihn durch einen Formatierer laufen und korrigieren Sie das eine Zeichen, das markiert wird.

← Zurück zum Blog