Unexpected non-whitespace character after JSON at position N (line L column C)
Un documento JSON contiene esattamente un valore di primo livello. Il parser ne ha letto uno completo e poi ha trovato dell’altro. La posizione segnalata è il punto in cui inizia il contenuto in eccesso, che di solito è l’inizio del secondo record.
Incolla il tuo JSON e vedi esattamente dove si rompe
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.
-
01 L’input è NDJSON o JSON Lines
Un valore JSON completo per riga, senza virgole e senza array che li racchiude. È il formato usato da pipeline di log, esportazioni BigQuery, operazioni bulk di Elasticsearch e API di LLM in streaming. Non è JSON rotto: è un formato diverso, che va letto riga per riga.
Si rompe
{"event":"login"} {"event":"logout"}Funziona
const records = text .split('\n') .filter((line) => line.trim()) .map((line) => JSON.parse(line)); -
02 Due risposte sono state concatenate
Un nuovo tentativo che ha aggiunto invece di sostituire, o una lettura di stream che ha unito due blocchi senza separarli.
-
03 È stato aggiunto output di debug al corpo
Un print dimenticato, un warning stampato, o dell’output di profiling scritto dopo il JSON. Il documento si analizza perfettamente fino al punto in cui inizia il testo in più, che è esattamente dove punta la posizione.
-
04 Il valore è codificato due volte
Una stringa JSON che contiene JSON, scartata una volta di meno o una di troppo. Il nostro strumento di unescape rileva quanti strati di codifica ha un valore.
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 | Extra data: line 2 column 1 (char 8) |
|---|---|
| Firefox | JSON.parse: unexpected non-whitespace character after JSON data |
Domande frequenti
- Come capisco se il mio file è NDJSON?
- Ogni riga non vuota si analizza da sola come JSON completo, non ci sono virgole tra i record, e non c’è alcun [ ] che li racchiude. Incollalo nel nostro validatore: te lo dirà e ti proporrà di racchiudere i record in un array.
- Non posso semplicemente metterci le parentesi quadre e le virgole?
- Puoi, e per un file piccolo è la correzione più rapida. Per uno grande, leggerlo riga per riga usa molta meno memoria, ed è proprio il motivo per cui il formato esiste.
Risolvilo adesso
Incolla il payload nello strumento qui sopra, oppure vai direttamente a quello creato per questo compito.
Converti NDJSON in JSON