Ayuda técnica
Errores JSON habituales: comas finales, comillas y Unexpected token
Corrige JSON inválido: comas finales, comillas simples, claves sin comillas y Unexpected token. Por qué falla JSON.parse y cómo validar JSON.
La mayoría de errores JSON vienen de una sintaxis estricta: comas finales, comillas simples, nombres de propiedad sin comillas, comas que faltan, corchetes desparejos, escapes incorrectos o comentarios.
JSON parece un objeto de JavaScript, pero es más estricto. Los nombres de propiedad y las cadenas necesitan comillas dobles.
Si ves “Unexpected token”, el carácter indicado puede ser donde falló el análisis, no necesariamente donde empezó el error original.
Tu JSON aparece como inválido. Casi siempre es un detalle de sintaxis, no un formato roto. Los siete fallos de abajo causan la mayoría de Unexpected token.
¿Por qué JSON se rompe tan fácil?
JSON es un formato de datos con sintaxis estricta. Un objeto literal de JavaScript puede parecer similar y seguir siendo JSON inválido. En JSON estándar, los nombres y las cadenas van entre comillas dobles, no se permiten comas finales y los comentarios no forman parte del formato.
1. Comas finales (trailing commas)
La coma extra después de la última propiedad es el problema. El JSON estándar no la permite.
Inválido
{
"name": "Alex",
"age": 30,
}
Válido
{
"name": "Alex",
"age": 30
}
La misma regla vale para arrays. Quita la coma después del último elemento.
Inválido
[
"red",
"green",
]
Válido
[
"red",
"green"
]
2. Comillas simples en lugar de dobles
JavaScript a menudo acepta comillas simples. JSON no. Los nombres de propiedad y los valores de cadena deben usar comillas dobles.
Inválido
{
'name': 'Alex'
}
Válido
{
"name": "Alex"
}
3. Nombres de propiedad sin comillas
En JavaScript a veces puedes escribir name sin comillas. En JSON cada nombre de propiedad debe ser una cadena entre comillas dobles.
Inválido
{
name: "Alex",
age: 30
}
Válido
{
"name": "Alex",
"age": 30
}
4. Comas que faltan entre valores
Hace falta una coma entre propiedades y entre elementos de array. El analizador puede marcar Unexpected token en la siguiente comilla o llave, no en la coma que falta.
Inválido
{
"name": "Alex"
"age": 30
}
Válido
{
"name": "Alex",
"age": 30
}
5. Corchetes y llaves de más o de menos
Los objetos usan { }. Los arrays usan [ ]. El JSON anidado falla cuando falta un ], sobra un } o se intercambian. Cuenta los pares de apertura y cierre.
Inválido
{
"items": [1, 2
}
Válido
{
"items": [1, 2]
}
6. Secuencias de escape inválidas
Dentro de una cadena JSON, la barra invertida inicia un escape. Secuencias como ", \ y \n son válidas. Una ruta de Windows escrita como C:\Users no lo es: \U no es un escape JSON legal. Duplica las barras o el analizador se detiene en ese carácter.
Inválido
{"file":"C:\Users\Alex"}
Válido
{"file":"C:\\Users\\Alex"}
7. Comentarios dentro de JSON
El JSON estándar no tiene comentarios. Algunas herramientas de configuración aceptan // o /* */ (JSONC, JSON5 y similares). Eso no es JSON estándar, y JSON.parse lo rechaza.
Inválido
{
// user name
"name": "Alex"
}
¿Qué significa “Unexpected token”?
El analizador encontró un carácter no permitido en esa posición. El punto indicado es donde dejó de leer. Si omitiste una coma antes, el error puede apuntar a la comilla de la siguiente propiedad. El texto cambia según el runtime; no esperes la misma frase en todos los navegadores.
¿Qué significa “Unexpected end of JSON input”?
El texto terminó antes de completar el valor. Causas típicas: falta un } o ], entrada truncada, cuerpo vacío o una respuesta de API cortada. No es un único fallo.
¿Por qué falla JSON.parse()?
JSON.parse() solo acepta texto JSON válido. Esto funciona:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Esto falla, porque las comillas simples no son JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
El mensaje exacto depende del runtime de JavaScript. Tómalo como pista y revisa comas, comillas y corchetes cerca de esa posición.
Un objeto literal de JavaScript puede verse como { name: 'Alex' }. El JSON válido debe verse como { "name": "Alex" }: nombres y cadenas con comillas dobles, sin coma final ni comentarios.
- Texto JSON
- El analizador lee tokens
- Datos válidos o Unexpected token
Cómo encontrar un error JSON rápido
Sigue este orden. No empieces reescribiendo todo el archivo.
- Pasa el JSON por un validador.
- Lee el primer error indicado.
- Mira un poco antes de la posición indicada.
- Revisa las comas, sobre todo finales y faltantes.
- Revisa las comillas: solo dobles.
- Empareja { } y [ ].
- Revisa los escapes con barra invertida en cadenas.
- Quita comentarios si necesitas JSON estricto.
Mapa rápido de las correcciones habituales:
| Problema | Corrección |
|---|---|
| Coma final | Borra la coma después del último elemento. |
| Comillas simples | Usa comillas dobles en nombres y cadenas. |
| Clave sin comillas | Envuelve el nombre de propiedad en comillas dobles. |
| Coma que falta | Pon una coma entre propiedades o elementos. |
| Corchete que falta | Cierra cada par { } y [ ]. |
| Escape inválido | Usa un escape legal o duplica barras en rutas. |
| Comentario | Quita // y /* */ para JSON estándar. |
Validar y formatear JSON en el navegador
NEXNARA Formatear y comparar JSON puede comprobar JSON en este dispositivo.
Puedes validar, formatear con 2 espacios, 4 espacios o tabuladores, minificar, comparar dos documentos (JSON Diff) y abrir un archivo .json. El análisis usa JSON.parse en el navegador, no eval.
Los documentos de más de 5 MB pueden ir lentos. El texto de más de 15 MB no se procesa en el navegador, para que la página siga respondiendo.
El procesamiento de JSON ocurre en tu navegador. Esta herramienta no envía el texto a un servidor de NEXNARA. Los anuncios y otras funciones del sitio sí usan la red; eso es aparte del procesamiento.
¿Quieres comprobar JSON inválido? Abre Formatear y comparar JSON y pega el texto.
FAQ
¿Por qué mi JSON dice “Unexpected token”?
El analizador encontró un carácter no permitido en ese punto. El fallo real —a menudo una coma que falta o una comilla simple— puede estar justo antes.
¿Se permiten comas finales en JSON?
No. El JSON estándar no permite una coma después de la última propiedad o elemento de array. Los objetos literales de JavaScript sí suelen permitirlo.
¿JSON puede usar comillas simples?
No. Los nombres de propiedad y las cadenas deben usar comillas dobles.
¿JSON puede contener comentarios?
No en JSON estándar. Algunas herramientas aceptan JSONC o JSON5 con comentarios; JSON.parse igual los rechaza.
¿Por qué falla JSON.parse()?
La cadena no es JSON válido. Causas típicas: comas finales, comillas simples, claves sin comillas, comentarios o un valor truncado. El mensaje exacto depende del runtime.
¿Cómo compruebo si el JSON es válido?
Pégalo en un validador como Formatear y comparar JSON o llama a JSON.parse en una consola. Si lanza una excepción, el texto no es JSON válido.