Vai al contenuto
jsonbeautifiers
Italiano
V8 Verificato eseguendo il parser su Node v24.15.0, V8 13.6.233.17.

"undefined" is not valid JSON

Hai passato undefined a JSON.parse. Viene convertito nella stringa "undefined", e JSON non ha quel literal, quindi fallisce in posizione 0. La vera domanda è da dove sia arrivato quell’undefined, e le risposte sono all’incirca tre.

Potresti vederlo scritto anche così

  • Unexpected token u in JSON at position 0

V8 ha riscritto quasi tutti i suoi messaggi di errore JSON nel 2022. La formulazione più vecchia resta quella che mostrano quasi tutti i risultati di ricerca, ma nessun runtime attuale la emette.

Incolla il tuo JSON e vedi esattamente dove si rompe

Input

Nulla di ciò che incolli lascia il tuo browser. L’allowlist connect-src ne fa una garanzia del browser anziché una promessa. Verificalo tu stesso

Che cosa lo provoca davvero

In ordine di quanto spesso ciascuno si rivela essere la risposta.

  1. 01 Una chiave di storage mai impostata

    localStorage.getItem restituisce null per una chiave mancante, e JSON.parse(null) in effetti funziona. Ma se in quella chiave è mai stata scritta la stringa "undefined", rileggerla produce esattamente questo errore, in modo permanente, finché la chiave non viene ripulita.

    Si rompe

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

    Funziona

    const raw = localStorage.getItem('token');
    const token = raw && raw !== 'undefined' ? JSON.parse(raw) : null;
  2. 02 Un valore asincrono non atteso

    Leggere una proprietà da una promise, o da uno stato non ancora caricato, dà undefined. L’analisi viene eseguita prima che i dati arrivino.

    Si rompe

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

    Funziona

    const res = await fetchUser();
    const data = JSON.parse(await res.text());
  3. 03 Una proprietà che non esiste

    Un campo rinominato, un refuso, o un’API che ha cambiato forma. obj.data quando il payload usa obj.result dà undefined senza nessun altro avviso.

Domande frequenti

Perché JSON.parse(null) funziona e JSON.parse(undefined) no?
Entrambi vengono prima convertiti in stringhe. null diventa "null", che è un documento JSON valido, quindi viene analizzato e restituisce null. undefined diventa "undefined", e JSON non ha alcun literal corrispondente.
Come ripulisco una chiave che contiene la stringa "undefined"?
localStorage.removeItem(chiave), oppure proteggi la lettura come mostrato sopra. Il valore sbagliato sopravvive ai ricaricamenti, ed è per questo che questo errore sembra spesso intermittente tra una macchina e l’altra.

Risolvilo adesso

Incolla il payload nello strumento qui sopra, oppure vai direttamente a quello creato per questo compito.

Valida un payload