JSON Toolkit

JSON pode ter comentários

Resumo: A RFC 8259 não tem sintaxe de comentário, então `//` e comentários de bloco fazem `JSON.parse` lançar erro. Use JSON5 ou JSONC, um campo `_comment`, um `description` de Schema ou YAML.

Iniciante~3 min de leituraPublicado em 2026-10-30Atualizado em 2026-10-30
Por que JSON não tem comentários e o que usar em vez disso

Resumo da ópera: nunca coloque comentários em JSON padrão; use JSONC ou JSON5 para configuração local que só humanos editam, mova as explicações para um description de JSON Schema quando o arquivo cruza sistemas, e mude para YAML ou TOML quando o volume de anotações crescer.

Não.

Qualquer analisador em conformidade com o padrão rejeita isto:

{
  "port": 8080 // apenas desenvolvimento local
}

O Chrome informa SyntaxError: Unexpected token }. O analisador encontrou /, que não pode iniciar nenhum valor JSON, e parou.

Por que a especificação exclui comentários de propósito

A RFC 8259 define seis valores: objeto, array, número, string, true/false, null. Não há produção de comentário.

Comentários foram propostos cedo e rejeitados por um motivo concreto: uma vez que comentários são legais, alguém os usa para carregar diretrizes — includes condicionais, variáveis de template — e todo analisador desenvolve seu próprio dialeto. A interoperabilidade quebra no primeiro salto. O JSON é deliberadamente apenas dados, sem nada executável dentro dele.

Quatro formas de manter suas notas

1. Use um superconjunto. JSON5 e JSONC aceitam os dois estilos de comentário. settings.json e tsconfig.json do VS Code são JSONC. O custo é real: JSON.parse ainda os rejeita, e APIs, pipelines de log e filas de mensagens geralmente aceitam apenas JSON padrão. Seu comentário é descartado silenciosamente ou lança erro em algum ponto a jusante.

2. Coloque a nota nos dados.

{
  "_comment": "porta atribuída pela operação, não altere",
  "port": 8080
}

Funciona em toda parte, mas polui o modelo: todo consumidor precisa saber quais chaves ignorar, e sua definição de tipo ganha um campo que não é realmente dado.

3. Use um description de Schema. description é destinado a humanos e ferramentas. Validadores o expõem, editores o mostram ao passar o mouse, e ele nunca entra no payload. Esta é a única opção que sobrevive à manutenção de longo prazo sem quebrar compatibilidade.

4. Mude o formato do arquivo. Se o arquivo existe para ser editado à mão, YAML ou TOML suportam comentários nativamente. Brigar com JSON aqui é esforço desperdiçado.

Escolhendo

Situação Resposta
Enviado a outro sistema, através de uma API ou de uma fila Sem comentários; documente em Schema ou em docs externos
Configuração lida apenas por humanos e editores JSONC, com extensão .jsonc
Precisa de ferramentas universais e explicação inline JSON padrão mais description de Schema
Configuração longa com muitas anotações Mude para YAML

Perguntas frequentes

Por que um campo _comment polui o modelo?

Porque ele se torna parte dos dados. Todo consumidor precisa saber quais chaves ignorar, e a definição de tipo ganha um campo que não é realmente dado de negócio.

A explicação deve viver em um description de JSON Schema?

Sim. description fica fora do payload, enquanto validadores o expõem e editores o mostram ao passar o mouse, então é a única opção que sobrevive à manutenção de longo prazo sem quebrar compatibilidade.

JSONC ou JSON5 podem ser analisados por JSON.parse?

Não. JSON.parse ainda rejeita comentários, e APIs, pipelines de log e filas de mensagens geralmente aceitam apenas JSON padrão, então o comentário é descartado ou lança erro em algum ponto a jusante.

Ferramentas

Leitura adicional