Unexpected non-whitespace character after JSON at position N (line L column C)
Un documento JSON contiene exactamente un valor de nivel superior. El parser leyó uno completo y después encontró otra cosa detrás. La posición que reporta es donde empieza el contenido sobrante, que suele ser el comienzo del segundo registro.
Pega tu JSON y ve exactamente dónde se rompe
Nada de lo que pegues sale de tu navegador. La lista de permitidos de connect-src convierte eso en una garantía del navegador, no en una promesa. Compruébalo tú mismo
Qué lo provoca realmente
Ordenados por la frecuencia con la que cada uno acaba siendo la respuesta.
-
01 La entrada es NDJSON o JSON Lines
Un valor JSON completo por línea, sin comas y sin array envolvente. Es el formato que usan los pipelines de logs, las exportaciones de BigQuery, las operaciones bulk de Elasticsearch y las APIs de LLM en streaming. No es JSON roto; es un formato distinto que hay que leer línea a línea.
Falla
{"event":"login"} {"event":"logout"}Funciona
const records = text .split('\n') .filter((line) => line.trim()) .map((line) => JSON.parse(line)); -
02 Se concatenaron dos respuestas
Un reintento que añadió en vez de reemplazar, o una lectura de stream que unió dos trozos sin separarlos.
-
03 Se añadió salida de depuración al cuerpo
Un print olvidado, un warning volcado, o salida de profiling escrita después del JSON. El documento se parsea perfectamente hasta el punto donde empieza el texto extra, que es exactamente donde apunta la posición.
-
04 El valor tiene doble codificación
Una cadena JSON que contiene JSON, desenvuelta una vez de menos o una vez de más. Nuestra herramienta de desescapado detecta cuántas capas de codificación tiene un valor.
El mismo error en otros entornos
El problema de fondo es idéntico; solo cambia la redacción. Si un compañero reporta alguno de estos, está mirando exactamente lo mismo que tú.
| Python | Extra data: line 2 column 1 (char 8) |
|---|---|
| Firefox | JSON.parse: unexpected non-whitespace character after JSON data |
Preguntas frecuentes
- ¿Cómo sé si mi archivo es NDJSON?
- Cada línea no vacía se parsea como JSON completo por sí sola, no hay comas entre registros, y no hay un [ ] envolvente. Pégalo en nuestro validador y te lo dirá, además de ofrecerte envolver los registros en un array.
- ¿No puedo envolverlo en corchetes y añadir comas y ya está?
- Sí, y para un archivo pequeño es el arreglo más rápido. Para uno grande, leerlo línea a línea usa muchísima menos memoria, que es la razón por la que existe el formato.
Arréglalo ahora
Pega el payload en la herramienta de arriba, o ve directamente a la creada para este trabajo.
Convertir NDJSON a JSON