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

Unexpected end of JSON input

Il parser è arrivato alla fine dell’input mentre se ne aspettava ancora. O la stringa era vuota fin dall’inizio, oppure un valore è rimasto aperto e il documento era troncato. Nota che questo messaggio non porta alcuna posizione, ed è proprio ciò che lo distingue dagli errori che invece ce l’hanno.

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 La stringa è vuota

    JSON.parse("") solleva subito questo errore. Una stringa vuota non è JSON valido. Di solito arriva da un HTTP 204, da una risposta senza corpo, o da una chiave di localStorage scritta come stringa vuota.

    Si rompe

    JSON.parse(localStorage.getItem('draft'))

    Funziona

    const raw = localStorage.getItem('draft');
    const draft = raw ? JSON.parse(raw) : null;
  2. 02 Il corpo della risposta era già stato consumato

    Il corpo di un Response può essere letto una sola volta. Chiamare res.text() e poi res.json() sulla stessa risposta ti dà una stringa vuota la seconda volta.

    Si rompe

    const text = await res.text();
    const data = await res.json();   // body already used

    Funziona

    const text = await res.text();
    const data = text ? JSON.parse(text) : null;
  3. 03 Il documento è troncato

    Una connessione caduta, un limite di dimensione del corpo (Express è a 100 kB di default), una lettura di stream finita troppo presto, o un file scritto mentre veniva letto. Se l’input finisce a metà di un oggetto, il nostro validatore indica ogni parentesi rimasta aperta e dove ciascuna è iniziata.

    Si rompe

    {"users": [{"id": 1}, {"id":

    Funziona

    {"users": [{"id": 1}, {"id": 2}]}
  4. 04 La cache di npm o di yarn è corrotta

    Buona parte delle ricerche su questa stringa riguarda npm e non il codice applicativo. Un file di cache scritto a metà produce lo stesso errore durante l’installazione. Esegui npm cache clean --force, cancella node_modules e package-lock.json, e reinstalla.

  5. 05 Hai analizzato il risultato di una funzione che non ha restituito nulla

    JSON.parse(undefined) dà un messaggio diverso ("undefined" is not valid JSON), ma una funzione che restituisce una stringa vuota anziché undefined finisce qui.

Lo stesso errore in altri runtime

Il problema di fondo è identico; cambia solo la formulazione. Se un collega segnala uno di questi messaggi, sta guardando esattamente la stessa cosa che vedi tu.

Python Expecting value: line 1 column 1 (char 0)
Python, truncated object Expecting ',' delimiter: line 1 column 28 (char 27)

Domande frequenti

Perché in questo messaggio non ci sono riga e colonna?
Perché non c’è una posizione da indicare. Il guasto è che l’input è finito, quindi il punto incriminato è la fine del documento. Il nostro validatore lo segnala come fine dell’input ed elenca quali parentesi erano ancora aperte.
JSON.parse(null) solleva questo errore?
No. JSON.parse(null) converte null nella stringa "null" e restituisce null, cosa che sorprende. È la stringa vuota a sollevare l’errore.

Risolvilo adesso

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

Trova la parentesi non chiusa