Você provavelmente já se queimou com isto: adiciona um // comentário temporário ao seu arquivo de configuração, e o JSON.parse do navegador dispara Unexpected token /. Isso não é um bug do JSON — na verdade é sintaxe de JSON5, e os navegadores só entendem JSON estrito. Este post percorre as diferenças principais entre JSON e JSON5, e como o formatador de JSON do Piick usa o modo tolerante para manter os dois formatos funcionando.

Qual é exatamente a diferença entre JSON e JSON5?

JSON é um subconjunto do JSON5. O JSON5 relaxa 6 regras em cima do JSON padrão:

  • Aceita comentários de uma linha // e comentários de bloco /* */
  • Strings podem usar aspas simples, não apenas aspas duplas
  • Objetos e arrays podem ter uma vírgula final
  • As chaves podem ficar sem aspas (desde que sejam identificadores válidos)
  • Números aceitam hexadecimal (0x1A), Infinity e NaN
  • Strings podem ocupar várias linhas (os separadores de linha são inseridos como quebras de linha)

O JSON padrão rejeita todas elas. O conjunto de regras foi proposto originalmente pelo criador do JSON, Douglas Crockford, e mais tarde formalizado como o padrão JSON5. Mas até hoje, o JSON.parse nativo do navegador só aceita JSON estrito — a especificação evoluiu, mas os motores não.

Quais problemas reais o JSON5 resolve?

Os dois pontos mais doloridos são comentários e vírgulas finais. Arquivos de configuração precisam de algumas linhas de comentário para explicar o significado dos campos; o JSON padrão proíbe isso. Com diffs do Git, adicionar ou remover uma vírgula final bagunça o bloco inteiro (cada nova entrada altera duas linhas). O package.json não usa JSON5 diretamente porque a cadeia de ferramentas do npm só aceita JSON estrito. Mas seus próprios arquivos de configuração, dados de mock e rascunhos podem muito bem usar JSON5 — basta converter de volta para JSON estrito no final com uma ferramenta.

Por que o JSON.parse nativo do navegador não é suficiente?

JSON.parse() só entende JSON conforme a especificação. Comentários, aspas simples e vírgulas finais disparam imediatamente um SyntaxError, e a mensagem de erro só diz Unexpected token sem informar a linha nem a coluna. Depurar significa busca binária. No formatador de JSON do Piick, ative a opção de modo tolerante e a ferramenta removerá automaticamente os comentários, converterá aspas simples em aspas duplas e eliminará as vírgulas finais antes de formatar como JSON padrão.

Como o Piick usa o modo tolerante para cobrir os dois mundos

Todo o pipeline roda localmente no seu navegador — os dados nunca saem do seu dispositivo:

  1. Cole sua string JSON5 na caixa de entrada
  2. Ative o modo tolerante
  3. Clique em “Formatar” — a ferramenta primeiro converte JSON5 em JSON padrão e depois exibe com indentação de 2 espaços, 4 espaços, tabulação ou minificado
  4. Os erros mostram números de linha e coluna precisos, sem busca binária
  5. Copie o resultado com um clique e cole em qualquer parser de JSON estrito

Resumindo: o modo tolerante permite que você escreva do jeito JSON5, entregue do jeito JSON — os dois lados ficam felizes. Da próxima vez que escrever dados de mock, você não vai mais brigar com vírgulas finais.

Para projetos reais, o caminho mais seguro é manter JSON estrito no repositório e usar o modo tolerante apenas na fase de rascunho local. Assim qualquer ferramenta downstream (CI, validadores, geradores de tipos) continua funcionando sem ajustes, e você aproveita o conforto do JSON5 só onde ele faz sentido.


Abra agora o formatador de JSON do Piick e experimente o modo tolerante. Cole um rascunho em JSON5 direto e veja o resultado.