Tech Help
Erros habituais de JSON: coma final, comiñas e Unexpected token
Corrixa JSON inválido: coma final, comiñas simples, chaves sen comiñas e Unexpected token. Por que falla JSON.parse e como validar JSON.
A maioría dos erros de JSON veñen de regras estritas: coma final, comiñas simples, nomes de propiedade sen comiñas, coma que falta, corchetes que non encaixan, escape inválido ou comentarios.
JSON semella un obxecto JavaScript, mais é máis estrito. Os nomes de propiedade e as cadeas precisan comiñas dobres.
Se ve Unexpected token, o carácter informado pode ser onde a análise parou—non necesariamente onde comezou o erro orixinal.
O seu JSON está marcado como inválido. Adoita ser un problema de sintaxe pequeno, non un formato de ficheiro estragado. Os sete erros de abaixo causan a maioría de Unexpected token.
Por que JSON se estraga tan doado?
JSON é un formato de datos con sintaxe estrita. Un literal de obxecto JavaScript pode semellar semellante e aínda ser JSON inválido. No JSON estándar, os nomes de propiedade e as cadeas precisan comiñas dobres, a coma final non está permitida e os comentarios non forman parte do formato.
1. Comas finais
A coma de máis despois da última propiedade é o problema. O JSON estándar non a permite.
Inválido
{
"name": "Alex",
"age": 30,
}
Válido
{
"name": "Alex",
"age": 30
}
A mesma regra vale para os arrays. Quite a coma despois do último elemento.
Inválido
[
"red",
"green",
]
Válido
[
"red",
"green"
]
2. Comiñas simples no lugar de dobres
JavaScript a miúdo acepta comiñas simples. JSON non. Os nomes de propiedade e os valores de cadea deben usar comiñas dobres.
Inválido
{
'name': 'Alex'
}
Válido
{
"name": "Alex"
}
3. Nomes de propiedade sen comiñas
En JavaScript ás veces pode escribir name sen comiñas. En JSON cada nome de propiedade debe ser unha cadea con comiñas dobres.
Inválido
{
name: "Alex",
age: 30
}
Válido
{
"name": "Alex",
"age": 30
}
4. Comas que faltan entre valores
As propiedades e os elementos de array precisan unha coma no medio. O analizador pode informar Unexpected token na comiña ou chave seguinte, non na coma que falta.
Inválido
{
"name": "Alex"
"age": 30
}
Válido
{
"name": "Alex",
"age": 30
}
5. Corchetes e chaves que faltan ou sobran
Os obxectos usan { }. Os arrays usan [ ]. O JSON aniñado a miúdo falla cando falta ], sobra } ou se intercambiaron. Conte os pares de abertura e peche.
Inválido
{
"items": [1, 2
}
Válido
{
"items": [1, 2]
}
6. Secuencias de escape inválidas
Dentro dunha cadea JSON, a barra invertida inicia un escape. Secuencias como ", \ e \n son válidas. Un camiño Windows escrito C:\Users non o é: \U non é un escape JSON legal. Dobre as barras invertidas, ou o analizador para nese carácter.
Inválido
{"file":"C:\Users\Alex"}
Válido
{"file":"C:\\Users\\Alex"}
7. Comentarios dentro de JSON
O JSON estándar non ten comentarios. Algunhas ferramentas de configuración aceptan // ou /* */ (JSONC, JSON5 e semellantes). Iso non é JSON estándar, e JSON.parse rexeitao.
Inválido
{
// user name
"name": "Alex"
}
Que quere dicir Unexpected token?
O analizador atopou un carácter non permitido nesa posición. O punto informado é onde a lectura parou. Se omitiu unha coma antes, o erro pode apuntar á comiña da propiedade seguinte. A redacción varía segundo o tempo de execución; non espere que cada navegador imprima a mesma frase.
Que quere dicir Unexpected end of JSON input?
O texto rematou antes de que o valor fose completo. Causas típicas: falta } ou ], entrada truncada, corpo baleiro ou unha resposta de API cortada. Non é un só erro.
Por que falla JSON.parse()?
JSON.parse() só acepta texto JSON válido. Isto funciona:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Isto falla, porque as comiñas simples non son JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
A mensaxe de erro exacta depende do tempo de execución de JavaScript. Trate a mensaxe como pista e inspecte comas, comiñas e corchetes preto desa posición.
Un literal de obxecto JavaScript pode semellar { name: 'Alex' }. O JSON válido debe semellar { "name": "Alex" }: nomes e cadeas con comiñas dobres, sen coma final, sen comentarios.
- Texto JSON
- O analizador le testemuños
- Datos válidos ou Unexpected token
Como atopar un erro JSON axiña
Traballe nesta orde. Non comece reescribindo todo o ficheiro.
- Pase o JSON por un validador.
- Lea o primeiro erro informado.
- Mire un chisco antes da posición informada.
- Comprobe as comas, sobre todo as finais e as que faltan.
- Comprobe as comiñas: só dobres.
- Faga coincidir { } e [ ].
- Comprobe os escapes de barra invertida nas cadeas.
- Quite os comentarios se precisa JSON estrito.
Mapa rápido das correccións habituais:
| Problema | Corrección |
|---|---|
| Coma final | Borre a coma despois do último elemento. |
| Comiñas simples | Use comiñas dobres para nomes e cadeas. |
| Chave sen comiñas | Envolva o nome da propiedade con comiñas dobres. |
| Coma que falta | Poña unha coma entre propiedades ou elementos de array. |
| Corchete que falta | Peche cada par { } e [ ]. |
| Escape inválido | Use un escape legal, ou dobre as barras invertidas nos camiños. |
| Comentario | Quite // e /* */ para JSON estándar. |
Valide e formatee JSON no navegador
NEXNARA Formatador e comparación de JSON pode comprobar JSON neste dispositivo.
Pode validar, embelecer con 2 espazos, 4 espazos ou tabulador, minify, comparar dous documentos (JSON Diff) e abrir un ficheiro .json. A análise usa JSON.parse no navegador, non eval.
Os documentos de máis de 5 MB poden parecer lentos. O texto de máis de 15 MB non se procesa no navegador, para que a páxina se manteña receptiva.
O procesamento de JSON en si acontece no seu navegador. O texto non se envía a un servidor de NEXNARA para esta ferramenta. Os anuncios e outras funcións do sitio aínda usan a rede; iso é aparte do procesamento.
Precisa comprobar JSON inválido? Abra Formatador e comparación de JSON e pegue o texto.
FAQ
Por que o meu JSON di Unexpected token?
O analizador atopou un carácter non permitido nese punto. O erro real—a miúdo unha coma que falta ou unha comiña simple—pode estar xusto antes desa posición.
Están permitidas as comas finais en JSON?
Non. O JSON estándar non permite unha coma despois da última propiedade ou elemento de array. Os literais de obxecto JavaScript a miúdo si.
JSON pode usar comiñas simples?
Non. Os nomes de propiedade e as cadeas deben usar comiñas dobres.
JSON pode conter comentarios?
Non no JSON estándar. Algunhas ferramentas aceptan JSONC ou JSON5 con comentarios; JSON.parse rexeitaos igual.
Por que falla JSON.parse()?
A cadea non é JSON válido. Causas típicas: coma final, comiñas simples, chaves sen comiñas, comentarios ou un valor truncado. A mensaxe exacta depende do tempo de execución.
Como comprobo se o JSON é válido?
Pégueo nun validador como Formatador e comparación de JSON, ou chame JSON.parse nunha consola. Se a análise lanza, o texto non é JSON válido.