Corrigir vírgulas finais em JSON

Uma vírgula final depois da última propriedade do objeto ou do último item de um array é válida em alguns contextos do JavaScript, mas não é JSON válido.

Por que o erro acontece

Literais de objeto JavaScript costumam permitir uma vírgula final, mas JSON exige que o último item seja seguido diretamente pelo colchete ou chave de fechamento.

Exemplo errado

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

JSON corrigido

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

De onde vêm as vírgulas finais

A maioria aparece quando alguém edita uma configuração à mão, comenta o último item ou cola de JavaScript ou TypeScript. Motores de template e geradores de código também produzem isso quando um loop emite vírgula depois de cada item sem rastrear o último índice.

Por que alguns parsers aceitam e o JSON não

Literais de objeto JavaScript, JSON5, JSONC, YAML e a maioria das sintaxes de literais de outras linguagens permitem vírgula final porque deixa os diffs mais limpos. JSON pela RFC 8259 deliberadamente não — JSON.parse, o encoding/json de Go e o módulo json de Python rejeitam.

Detectar vírgulas finais antes da produção

Lint arquivos de configuração em CI com um parser JSON estrito (jq, python -m json.tool ou node -e 'JSON.parse(...)'). Em repositórios TypeScript, defina "trailingComma": "none" no Prettier para qualquer .json, para que o formatador não insira uma.

Quando a vírgula final não é o bug real

Se um payload vem de uma API ou de uma biblioteca que produz JSON com vírgula final, o problema está na serialização upstream, não no consumidor. Corrigir a vírgula localmente esconde um bug do gerador que volta na próxima chamada — corrija quem produz.

FAQ

P: Algum dia o JSON.parse vai aceitar vírgula final? R: Não — modo estrito é o padrão. P: JSON5 é um substituto seguro? R: Só para configuração editada por humanos; nunca para protocolos de rede. P: A ferramenta de auto-reparo consegue remover só vírgulas finais? R: Sim, cole o JSON e ela tira essas vírgulas junto com outros erros de sintaxe comuns.