FormatArc JSON Formatter analisando JSON após remover uma vírgula finalFormatArc JSON Formatter analisando JSON após remover uma vírgula final
Publicado: 2026-06-08

Vírgula final no JSON: por que falha e como removê-la (RFC 8259)

Corrija erros de vírgula final no JSON como Unexpected token } ou Expecting property name. Compare antes e depois e localize a vírgula por número de linha no navegador.

Vírgula final no JSON — a resposta curta

Uma vírgula final é a vírgula que sobra depois do último item de um objeto ou array, logo antes do fechamento } ou ]. O JSON padrão (RFC 8259) não a permite, então um analisador estrito rejeita o arquivo com um erro como Unexpected token } ou Expecting property name enclosed in double quotes. A correção é apagar essa vírgula.

Esta página trata de vírgulas finais (,), não de comentários // ou /* */. Se você na verdade queria comentários no JSON, esse é outro assunto, coberto em É permitido usar comentários no JSON?. Aqui o foco é a vírgula extra: por que dá erro, como encontrá-la, como removê-la e como os supersets JSON5 e JSONC se diferenciam.

Corrija agora no seu navegador

Se você só quer que o erro suma, não precisa contar caracteres na mão:

  1. Abra o formatador de JSON
  2. Cole o JSON que está falhando
  3. Leia a linha do erro: ela aponta para o colchete de fechamento que vem depois da vírgula extra
  4. Apague a vírgula logo antes desse } ou ] e clique em Run de novo
  5. Copie o JSON limpo e formatado da saída

O formatador roda inteiramente no seu navegador. O JSON que você cola nunca é enviado, registrado ou armazenado — o que importa quando o conteúdo é uma resposta de API ou um arquivo de configuração com dados internos.

FormatArc JSON Formatter mostrando JSON limpo e formatadoFormatArc JSON Formatter mostrando JSON limpo e formatado

Antes e depois

Uma vírgula final pode aparecer em três lugares. Veja cada caso quebrado ao lado da correção.

Vírgula final em um objeto:

{
  "name": "Aoi",
  "role": "Engineer",
}
{
  "name": "Aoi",
  "role": "Engineer"
}

Vírgula final em um array:

[
  "red",
  "green",
  "blue",
]
[
  "red",
  "green",
  "blue"
]

Aninhada: uma vírgula final pode se esconder dentro de um objeto ou array interno:

{
  "tags": ["a", "b",],
  "meta": {
    "active": true,
  }
}
{
  "tags": ["a", "b"],
  "meta": {
    "active": true
  }
}

Em todos os casos a correção é a mesma: remover a vírgula que fica entre o último valor e o colchete de fechamento. Os valores em si estão corretos.

As mensagens de erro que você verá

Cada analisador descreve a mesma vírgula final de um jeito diferente, então o texto depende da linguagem que lê o arquivo.

Navegador e Node.js (V8) JSON.parse:

SyntaxError: Unexpected token } in JSON at position 42
SyntaxError: Expected double-quoted property name in JSON at position 42

Python json.loads:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 4 column 1 (char 42)

O ponto comum é que o analisador chega à vírgula, espera outro valor ou chave depois dela e, em vez disso, encontra um colchete de fechamento. A posição ou o número de linha informado corresponde ao fechamento } ou ], então a vírgula a apagar está na linha anterior. Se você vê uma dessas mensagens mas não acha a vírgula, cole o arquivo no formatador de JSON e ele marca a linha. Para a lista completa de causas de erros de análise (aspas simples, chaves sem aspas, vírgulas faltando), veja Como corrigir erros de análise do JSON.

Por que o JSON proíbe vírgulas finais

Pela RFC 8259, a vírgula é um separador entre valores, não um terminador depois de cada valor. A gramática da Seção 2 define um array como valores separados por vírgulas e um objeto como membros separados por vírgulas — não há regra de produção que permita um elemento após o último valor. Por isso, uma vírgula seguida apenas de espaços e um colchete de fechamento não tem nada para separar, e um analisador conforme deve rejeitá-la.

É também por isso que o erro é tão comum: os literais de objeto e array do JavaScript permitem vírgulas finais, e muitos editores formatam arquivos .js assim. Mas JSON.parse() lê JSON estrito, não JavaScript, então o mesmo texto que funciona dentro de um arquivo .js falha assim que é analisado como JSON. Copiar um objeto do código para um arquivo .json é a forma clássica de uma vírgula final entrar despercebida.

Para o restante das regras do JSON estrito, veja o guia de sintaxe do JSON.

Remova vírgulas finais automaticamente

Apagar uma vírgula na mão é rápido. Quando você gera JSON ou limpa muitos arquivos, automatize.

Gere JSON com um serializador, não com concatenação de strings. JSON.stringify (e o equivalente em cada linguagem) nunca emite uma vírgula final, então o problema não acontece:

const data = { name: "Aoi", role: "Engineer" };
const json = JSON.stringify(data, null, 2);
// sempre válido — nenhuma vírgula final é produzida

Formate ao salvar. No VS Code, executar Format Document (ou Prettier com format-on-save) em um arquivo .json remove as vírgulas finais como parte da reformatação. É o jeito mais fácil de manter limpos os arquivos de configuração editados à mão.

Uma expressão regular é o último recurso. O padrão ,\s*([}\]]) casa com uma vírgula seguida de espaços e um colchete de fechamento:

const cleaned = source.replace(/,(\s*[}\]])/g, "$1");
const data = JSON.parse(cleaned);

Use apenas como alternativa de reserva. Ela pode errar com uma vírgula que aparece dentro de um valor de string (por exemplo "a,}"), então use só em arquivos que você controla e valide o resultado no formatador de JSON depois.

As opções do analisador aceitam, não reescrevem. Algumas bibliotecas toleram vírgulas finais (JsonSerializerOptions.AllowTrailingCommas do .NET, entre outras). Isso permite que seu código leia o arquivo, mas não muda o arquivo em disco nem o torna válido para outro analisador estrito. Se o JSON precisa trafegar para outro serviço, você ainda precisa remover a vírgula.

Evite que as vírgulas finais voltem

Corrigir o arquivo uma vez não impede o próximo. Algumas proteções as pegam cedo:

  • Editor: o VS Code sinaliza vírgulas finais em arquivos .json (não em .jsonc). Mantenha a extensão .json para o aviso continuar ativo
  • Linting e CI: um linter que entende JSON, ou um passo de JSON.parse no seu build, faz o commit falhar antes de o arquivo quebrado ir para produção. Vale a pena para arquivos de configuração editados à mão
  • Saber onde aparecem: as vírgulas finais surgem mais em arquivos de configuração editados à mão, em JSON colado de código .js e em strings montadas por concatenação. O JSON gerado por um serializador real é seguro

JSON5 e JSONC permitem vírgulas finais

Se você continua querendo uma vírgula final (por exemplo, para diffs mais limpos ao adicionar uma linha), há formatos que a permitem.

  • JSON5 é um superset do JSON com especificação formal que permite vírgulas finais, comentários, chaves sem aspas e aspas simples
  • JSONC (JSON with Comments, usado pelo VS Code) adiciona comentários, e seus analisadores podem aceitar vírgulas finais de forma opcional

O detalhe é o alcance: eles servem para arquivos de configuração lidos por uma ferramenta que os entende, mas não são válidos para uma carga de API, para package.json nem para qualquer serviço que use um JSON.parse estrito. A comparação completa, incluindo como a Seção 9 da RFC 8259 permite essas extensões, está em É permitido usar comentários no JSON?, que aborda os mesmos supersets pelo ângulo dos comentários.

Se o seu objetivo é apenas um JSON estrito e legível, passe o resultado pelo formatador de JSON e veja as dicas para formatar JSON para manter cargas grandes organizadas.

Perguntas frequentes

Vírgulas finais são permitidas no JSON?

Não. A RFC 8259 define as vírgulas como separadores entre valores e não permite nenhum elemento após o último valor, então uma vírgula antes de um fechamento } ou ] é inválida. Um analisador estrito a rejeita com um erro como Unexpected token }.

Como encontro e removo uma vírgula final?

Cole o JSON no formatador de JSON. A mensagem de erro aponta para o colchete de fechamento que vem depois da vírgula extra, então apague a vírgula da linha anterior e execute de novo. Para evitá-la de vez, gere o JSON com JSON.stringify em vez de montar strings à mão.

Por que o JavaScript permite vírgulas finais mas o JSON não?

Os literais de objeto e array do JavaScript as permitem por conveniência. JSON é um formato de dados estrito que JSON.parse lê, segue a RFC 8259 e não tem regra para um elemento após o último valor. O mesmo texto é válido como literal de JS e inválido como JSON.

Qual mensagem de erro uma vírgula final causa?

O mais comum é Unexpected token } (ou ]) no V8/Node, Expected double-quoted property name no V8 mais recente e Expecting property name enclosed in double quotes no Python. Todos significam que o analisador encontrou um colchete de fechamento onde esperava outro valor ou chave.

Posso só permitir vírgulas finais em vez de removê-las?

Alguns analisadores podem ser configurados para tolerá-las (por exemplo, AllowTrailingCommas do .NET), mas isso só ajuda o código que lê o arquivo: não o torna válido para outro analisador nem para transmissão. Para um JSON interoperável, remova a vírgula.

Vírgulas finais funcionam no JSON5?

Sim. O JSON5 permite vírgulas finais de forma explícita, junto com comentários e chaves sem aspas. Serve para arquivos de configuração locais, mas não para dados de API, que devem ser JSON estrito conforme a RFC 8259.

Resumo

  • Uma vírgula final é a vírgula antes de um fechamento } ou ]; o JSON padrão a proíbe
  • Os erros aparecem como Unexpected token } ou Expecting property name enclosed in double quotes; a posição informada é o colchete, então a vírgula está logo antes
  • A correção mais rápida é colar o arquivo no formatador de JSON, ler a linha e apagar a vírgula
  • Gere JSON com JSON.stringify e formate ao salvar para evitar que as vírgulas finais voltem
  • JSON5 e JSONC permitem vírgulas finais, mas apenas para ferramentas que os entendem, não para cargas de API