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),InfinityeNaN - 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:
- Cole sua string JSON5 na caixa de entrada
- Ative o modo tolerante
- 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
- Os erros mostram números de linha e coluna precisos, sem busca binária
- 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.