Erros de parse JSON: 10 falhas comuns e como corrigi-las
2024-09-12
Respostas de API e arquivos de configuracao costumam falhar por uma unica linha invalida. Este guia cobre dez erros frequentes com exemplo quebrado, causa e JSON corrigido, alem de como localizar a linha no nosso formatador online.
1. Aspas simples em chaves ou strings
JSON exige aspas duplas para chaves e valores string. Literais de objeto em JavaScript aceitam aspas simples; JSON nao.
Erro tipico: Unexpected token ' in JSON at position ...
{
name: "Alice",
"age": 30
}{
"name": "Alice",
"age": 30
}2. Virgulas no final
Nao pode haver virgula apos a ultima propriedade ou o ultimo item do array. Alguns editores inserem virgulas finais que quebram parsers JSON estritos.
Literais de objeto/array em JavaScript ES2019+ aceitam virgula final; a especificacao JSON (RFC 8259) nunca aceita.
{
"items": [1, 2, 3,],
"tags": ["a", "b",]
}{
"items": [1, 2, 3],
"tags": ["a", "b"]
}3. Chaves sem aspas
Toda chave deve ser string com aspas duplas. { active: true } e JSON invalido.
{
active: true,
"score": 95
}4. Virgula faltando ou sobrando
Pares adjacentes precisam de virgulas; virgula duplicada gera erro Unexpected token.
{
"a": 1
"b": 2
}{
"a": 1,, "b": 2
}5. Sequencias de escape invalidas
Barras invertidas em caminhos devem ser duplicadas: \\ para cada \. Uma barra isolada causa Bad escaped character.
{ "path": "C:\Users\data" }{ "path": "C:\\Users\\data" }6. NaN, Infinity, undefined
JSON so possui null para vazio; nao aceita valores especificos do JavaScript como NaN ou undefined.
{ "value": NaN }7. Comentarios
JSON nao suporta comentarios // nem /* */. Remova-os antes de fazer parse.
Documentacao, JSONC do VS Code e JSON5 aceitam comentarios; nao sao entrada valida para JSON.parse. Para troca de dados, use JSON estrito.
{
// user profile
"name": "Bob"
}8. Multiplos valores na raiz ou colchetes sem fechar
JSON valido tem um unico objeto ou um unico array na raiz. Falta de } ou ] gera Unexpected end of JSON input.
9. Numeros invalidos
Nao pode zero a esquerda (007), nem hexadecimal (0xFF), nem ponto decimal solto.
10. Caracteres de controle sem escape
Quebras de linha e tabulacoes em strings devem ser \n e \t, nao quebras literais copiadas de logs.
Teste online
Cole o texto na ferramenta JSON. Em caso de falha, a barra lateral mostra mensagem e numero da linha; o editor destaca essa linha.
Depois de corrigir, formate ou minifique novamente; um aviso de sucesso confirma que o JSON esta valido.