Este SyntaxError es lanzado por JSON.parse() cuando la cadena que recibe no es JSON válido. 'Unexpected end of input' específicamente significa que la cadena fue cortada antes de que la estructura JSON estuviera completa, o que la cadena estaba vacía.
Por qué ocurre
- •Parsear una cadena vacía, por ejemplo de un fetch fallido que no devolvió cuerpo.
- •Una respuesta de red fue truncada antes de ser recibida completamente.
- •Un archivo o campo de base de datos que almacena JSON fue guardado accidentalmente vacío o escrito parcialmente.
- •La concatenación o interpolación de cadenas produjo una cadena JSON malformada.
Ejemplos
Código que causa el error
const raw = ""; // empty string from a failed fetch
const data = JSON.parse(raw);
console.log(data);Error en la terminal
SyntaxError: Unexpected end of JSON input
Cómo solucionarlo
Valida la cadena antes de parsearla: verifica que no esté vacía y envuelve JSON.parse() en un try/catch. Al obtener JSON de una API, usa response.json() en lugar de parsear manualmente response.text(), ya que maneja el Content-Type y los casos de cuerpo vacío de forma más elegante.
Código corregido
const raw = "";
try {
const data = JSON.parse(raw);
console.log(data);
} catch (err) {
if (err instanceof SyntaxError) {
console.error("Invalid JSON received:", raw);
}
}Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis