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 ...

Invalido
{
  name: "Alice",
  "age": 30
}
Corrigido
{
  "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.

Invalido
{
  "items": [1, 2, 3,],
  "tags": ["a", "b",]
}
Corrigido
{
  "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.

Virgula faltando
{
  "a": 1
  "b": 2
}
Virgula extra
{
  "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.

Invalido
{ "path": "C:\Users\data" }
Corrigido
{ "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.