Corrigir o erro de parse JSON: Expected Property Name

Esse erro normalmente significa que o parser chegou a uma chave de objeto que não é JSON válida: chave sem aspas, comentário, vírgula final ou sintaxe JavaScript dentro de JSON estrito.

O que o erro significa

Membros de um objeto JSON sempre precisam começar com um nome de propriedade entre aspas duplas. Quando um parser diz expected property name ou expected property name or '}', ele costuma estar logo depois de uma chave de abertura ou de uma vírgula e esperando uma chave como "name". Se vir name, // comentário, /* comentário */ ou uma chave de fechamento depois de uma vírgula final, ele para — esses padrões pertencem ao JavaScript, não ao JSON estrito.

Causas mais comuns

A forma mais rápida de depurar é olhar o caractere na linha e coluna informadas e o token anterior. A maior parte dos casos vem de um destes quatro deslizes.

  • Chaves de objeto sem aspas, ex.: { name: "Ada" }
  • Chaves ou strings com aspas simples, ex.: { 'name': 'Ada' }
  • Comentários copiados de arquivos JavaScript ou JSONC
  • Uma vírgula final antes de } ou ]

Exemplo errado

{ name: 'Ada', active: true, // copied from a JS object }

JSON corrigido

{ "name": "Ada", "active": true }

Checklist de reparo

Coloque aspas duplas em cada chave, troque strings com aspas simples por aspas duplas, remova comentários, tire as vírgulas finais e garanta que booleanos e null estão em minúsculas. Depois do reparo, rode uma validação estrita antes de salvar o valor em um arquivo de configuração, mandar para uma API ou colar em uma migração de banco.

Quando o reparo automático é seguro

O reparo automático é seguro quando a intenção é clara e se trata só de limpeza de sintaxe. Não trate isso como validação de negócio. Se um nome de chave, número, data ou enum pode ser ambíguo, corrija a sintaxe primeiro e compare a saída reparada com o sistema fonte ou com o schema da API.