Ajuda técnica
Erros JSON comuns: vírgula final, aspas e Unexpected token
Corrija JSON inválido: vírgula no fim, aspas simples, chaves sem aspas e Unexpected token. Por que JSON.parse falha e como validar JSON.
A maior parte dos erros JSON vem de uma sintaxe rígida: vírgula no fim, aspas simples, nomes de propriedade sem aspas, vírgulas faltando, colchetes desalinhados, escapes inválidos ou comentários.
JSON parece um objeto JavaScript, mas é mais estrito. Nomes de propriedade e strings precisam de aspas duplas.
Se aparecer “Unexpected token”, o caractere indicado pode ser onde a análise parou — não necessariamente onde o erro começou.
Seu JSON aparece como inválido. Quase sempre é um detalhe de sintaxe, não um formato quebrado. Os sete erros abaixo causam a maioria dos Unexpected token.
Por que JSON quebra tão fácil?
JSON é um formato de dados com sintaxe rígida. Um objeto literal de JavaScript pode parecer parecido e ainda ser JSON inválido. No JSON padrão, nomes e strings usam aspas duplas, vírgula no fim não é permitida e comentários não fazem parte do formato.
1. Vírgula no fim (trailing commas)
A vírgula extra depois da última propriedade é o problema. O JSON padrão não permite.
Inválido
{
"name": "Alex",
"age": 30,
}
Válido
{
"name": "Alex",
"age": 30
}
A mesma regra vale para arrays. Tire a vírgula depois do último item.
Inválido
[
"red",
"green",
]
Válido
[
"red",
"green"
]
2. Aspas simples em vez de duplas
JavaScript costuma aceitar aspas simples. JSON não. Nomes de propriedade e valores de string precisam de aspas duplas.
Inválido
{
'name': 'Alex'
}
Válido
{
"name": "Alex"
}
3. Nomes de propriedade sem aspas
No JavaScript às vezes dá para escrever name sem aspas. No JSON todo nome de propriedade precisa ser uma string com aspas duplas.
Inválido
{
name: "Alex",
age: 30
}
Válido
{
"name": "Alex",
"age": 30
}
4. Vírgulas faltando entre valores
É preciso vírgula entre propriedades e entre itens de array. O analisador pode marcar Unexpected token na próxima aspa ou chave, não na vírgula que falta.
Inválido
{
"name": "Alex"
"age": 30
}
Válido
{
"name": "Alex",
"age": 30
}
5. Colchetes e chaves a mais ou a menos
Objetos usam { }. Arrays usam [ ]. JSON aninhado falha quando falta um ], sobra um } ou os dois se invertem. Conte os pares de abertura e fechamento.
Inválido
{
"items": [1, 2
}
Válido
{
"items": [1, 2]
}
6. Sequências de escape inválidas
Dentro de uma string JSON, a barra invertida inicia um escape. Sequências como ", \ e \n são válidas. Um caminho Windows escrito como C:\Users não é: \U não é um escape JSON legal. Dobre as barras ou o analisador para nesse caractere.
Inválido
{"file":"C:\Users\Alex"}
Válido
{"file":"C:\\Users\\Alex"}
7. Comentários dentro de JSON
JSON padrão não tem comentários. Algumas ferramentas de config aceitam // ou /* */ (JSONC, JSON5 e similares). Isso não é JSON padrão, e JSON.parse rejeita.
Inválido
{
// user name
"name": "Alex"
}
O que significa “Unexpected token”?
O analisador encontrou um caractere não permitido nessa posição. O ponto indicado é onde a leitura parou. Se você omitiu uma vírgula antes, o erro pode apontar para a aspa da próxima propriedade. O texto muda conforme o runtime; não espere a mesma frase em todo navegador.
O que significa “Unexpected end of JSON input”?
O texto acabou antes de o valor ficar completo. Causas típicas: falta um } ou ], entrada cortada, corpo vazio ou resposta de API interrompida. Não é um único bug.
Por que JSON.parse() falha?
JSON.parse() só aceita texto JSON válido. Isto funciona:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Isto falha, porque aspas simples não são JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
A mensagem exata depende do runtime JavaScript. Trate como dica e inspecione vírgulas, aspas e colchetes perto dessa posição.
Um objeto literal JavaScript pode parecer { name: 'Alex' }. JSON válido precisa parecer { "name": "Alex" }: nomes e strings com aspas duplas, sem vírgula no fim e sem comentários.
- Texto JSON
- O analisador lê tokens
- Dados válidos ou Unexpected token
Como achar um erro JSON rápido
Siga esta ordem. Não comece reescrevendo o arquivo inteiro.
- Passe o JSON num validador.
- Leia o primeiro erro indicado.
- Olhe um pouco antes da posição indicada.
- Confira vírgulas, principalmente no fim e as que faltam.
- Confira aspas: só duplas.
- Combine { } e [ ].
- Confira escapes com barra invertida nas strings.
- Remova comentários se precisar de JSON estrito.
Mapa rápido dos consertos usuais:
| Problema | Correção |
|---|---|
| Vírgula no fim | Apague a vírgula depois do último item. |
| Aspas simples | Use aspas duplas em nomes e strings. |
| Chave sem aspas | Coloque aspas duplas no nome da propriedade. |
| Vírgula faltando | Coloque vírgula entre propriedades ou itens. |
| Colchete faltando | Feche cada par { } e [ ]. |
| Escape inválido | Use um escape legal ou dobre barras em caminhos. |
| Comentário | Remova // e /* */ no JSON padrão. |
Validar e formatar JSON no navegador
NEXNARA Formatar e comparar JSON pode conferir JSON neste dispositivo.
Dá para validar, formatar com 2 espaços, 4 espaços ou tab, minificar, comparar dois documentos (JSON Diff) e abrir um arquivo .json. A análise usa JSON.parse no navegador, não eval.
Documentos maiores que 5 MB podem ficar lentos. Texto maior que 15 MB não é processado no navegador, para a página continuar responsiva.
O processamento de JSON acontece no seu navegador. Esta ferramenta não envia o texto a um servidor da NEXNARA. Anúncios e outros recursos do site ainda usam a rede; isso é separado do processamento.
Precisa conferir JSON inválido? Abra Formatar e comparar JSON e cole o texto.
FAQ
Por que meu JSON diz “Unexpected token”?
O analisador encontrou um caractere não permitido nesse ponto. O erro real — muitas vezes uma vírgula faltando ou aspas simples — pode estar logo antes.
Vírgula no fim é permitida em JSON?
Não. JSON padrão não permite vírgula depois da última propriedade ou item de array. Objetos literais JavaScript costumam permitir.
JSON pode usar aspas simples?
Não. Nomes de propriedade e strings precisam de aspas duplas.
JSON pode ter comentários?
Não no JSON padrão. Algumas ferramentas aceitam JSONC ou JSON5 com comentários; JSON.parse mesmo assim rejeita.
Por que JSON.parse() falha?
A string não é JSON válido. Causas típicas: vírgula no fim, aspas simples, chaves sem aspas, comentários ou valor cortado. A mensagem exata depende do runtime.
Como saber se o JSON é válido?
Cole num validador como Formatar e comparar JSON ou chame JSON.parse no console. Se lançar exceção, o texto não é JSON válido.