Zum Inhalt springen
jsonbeautifiers
Deutsch
V8 Überprüft durch Ausführen des Parsers auf Node v24.15.0, V8 13.6.233.17.

"undefined" is not valid JSON

Sie haben undefined an JSON.parse übergeben. Es wird in die Zeichenkette "undefined" umgewandelt, und JSON kennt dieses Literal nicht, also scheitert es an Position 0. Die eigentliche Frage ist, woher das undefined kam, und darauf gibt es etwa drei Antworten.

Sie sehen das vielleicht auch so geschrieben

  • Unexpected token u in JSON at position 0

V8 hat 2022 die meisten seiner JSON-Fehlermeldungen neu formuliert. Die ältere Formulierung ist noch immer das, was die meisten Suchergebnisse zeigen, aber keine aktuelle Laufzeitumgebung gibt sie aus.

Fügen Sie Ihr JSON ein und sehen Sie genau, wo es bricht

Eingabe

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.

  1. 01 Ein Speicherschlüssel, der nie gesetzt wurde

    localStorage.getItem gibt für einen fehlenden Schlüssel null zurück, und JSON.parse(null) funktioniert sogar. Wurde in diesen Schlüssel aber jemals die Zeichenkette "undefined" geschrieben, erzeugt das Zurücklesen genau diesen Fehler - dauerhaft, bis der Schlüssel gelöscht wird.

    Geht kaputt

    localStorage.setItem('token', someUndefinedValue);   // writes "undefined"
    JSON.parse(localStorage.getItem('token'));

    Funktioniert

    const raw = localStorage.getItem('token');
    const token = raw && raw !== 'undefined' ? JSON.parse(raw) : null;
  2. 02 Ein asynchroner Wert wurde nicht abgewartet

    Eine Eigenschaft von einem Promise oder von noch nicht geladenem State zu lesen ergibt undefined. Das Parsen läuft, bevor die Daten da sind.

    Geht kaputt

    const data = JSON.parse(fetchUser().body);

    Funktioniert

    const res = await fetchUser();
    const data = JSON.parse(await res.text());
  3. 03 Eine Eigenschaft, die es nicht gibt

    Ein umbenanntes Feld, ein Tippfehler oder eine API, die ihre Gestalt geändert hat. obj.data, wenn das Payload obj.result verwendet, ergibt undefined ohne jede weitere Warnung.

Häufige Fragen

Warum funktioniert JSON.parse(null), JSON.parse(undefined) aber nicht?
Beide werden zuerst in Zeichenketten umgewandelt. Aus null wird "null", ein gültiges JSON-Dokument, das sich parsen lässt und null zurückgibt. Aus undefined wird "undefined", und dafür hat JSON kein Literal.
Wie lösche ich einen Schlüssel, der die Zeichenkette "undefined" enthält?
localStorage.removeItem(schlüssel), oder sichern Sie das Lesen wie oben gezeigt ab. Der schlechte Wert überlebt Neuladen, weshalb dieser Fehler zwischen verschiedenen Rechnern oft sporadisch wirkt.

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.

Ein Payload validieren