Saltar al contenido
jsonbeautifiers
Español
V8 Verificado ejecutando el parser en Node v24.15.0, V8 13.6.233.17.

Unexpected end of JSON input

El parser llegó al final de la entrada cuando todavía esperaba más. O la cadena estaba vacía desde el principio, o un valor quedó abierto y el documento estaba truncado. Fíjate en que este mensaje no lleva posición, y eso es justo lo que lo distingue de los errores que sí la llevan.

Pega tu JSON y ve exactamente dónde se rompe

Entrada

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.

  1. 01 La cadena está vacía

    JSON.parse("") lanza esto de inmediato. Una cadena vacía no es JSON válido. Suele venir de un HTTP 204, de una respuesta sin cuerpo, o de una clave de localStorage que se escribió como cadena vacía.

    Falla

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

    Funciona

    const raw = localStorage.getItem('draft');
    const draft = raw ? JSON.parse(raw) : null;
  2. 02 El cuerpo de la respuesta ya se había consumido

    El cuerpo de un Response solo se puede leer una vez. Llamar a res.text() y luego a res.json() sobre la misma respuesta te da una cadena vacía la segunda vez.

    Falla

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

    Funciona

    const text = await res.text();
    const data = text ? JSON.parse(text) : null;
  3. 03 El documento está truncado

    Una conexión caída, un límite de tamaño de cuerpo (Express usa 100 kB por defecto), una lectura de stream que terminó antes de tiempo, o un archivo que se escribía mientras se leía. Si la entrada termina a mitad de un objeto, nuestro validador nombra cada corchete que quedó abierto y dónde empezó cada uno.

    Falla

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

    Funciona

    {"users": [{"id": 1}, {"id": 2}]}
  4. 04 La caché de npm o de yarn está corrupta

    Buena parte de las búsquedas de esta cadena son sobre npm y no sobre código de aplicación. Un archivo de caché escrito a medias produce el mismo error durante la instalación. Ejecuta npm cache clean --force, borra node_modules y package-lock.json, y vuelve a instalar.

  5. 05 Has parseado el resultado de una función que no devolvió nada

    JSON.parse(undefined) da un mensaje distinto ("undefined" is not valid JSON), pero una función que devuelve una cadena vacía en vez de undefined acaba aquí.

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 Expecting value: line 1 column 1 (char 0)
Python, truncated object Expecting ',' delimiter: line 1 column 28 (char 27)

Preguntas frecuentes

¿Por qué este mensaje no trae línea ni columna?
Porque no hay ninguna posición a la que apuntar. El fallo es que la entrada se acabó, así que el lugar problemático es el final del documento. Nuestro validador lo reporta como fin de la entrada y lista qué corchetes seguían abiertos.
¿JSON.parse(null) lanza esto?
No. JSON.parse(null) convierte null a la cadena "null" y devuelve null, lo cual sorprende a mucha gente. Lo que lanza el error es la cadena vacía.

Arréglalo ahora

Pega el payload en la herramienta de arriba, o ve directamente a la creada para este trabajo.

Encuentra el corchete sin cerrar