S
SoSimple.tools
Ferramenta para devs

Formatador e validador JSON online

Formate, minifique e valide seu JSON na hora. Tudo roda no seu navegador; esta página não envia o texto que você cola

Funciona no seu navegador: o que você informa fica no seu aparelho

Saída

Compartilhar esta ferramenta

Como usar esta ferramenta

  1. Cole seu JSON na caixa “Entrada JSON bruta”.
  2. Escolha a indentação: 2 espaços, 4 espaços ou tab.
  3. Clique em Formatar para uma visualização legível ou em Minificar para remover os espaços opcionais.
  4. Veja o status (JSON válido ou Erro de sintaxe) com o tamanho bruto e o número de nós e copie o resultado.

Exemplo prático

Cole {"name":"Ana","tags":["a","b"],} e o status mostra Erro de sintaxe, porque o JSON não aceita vírgula no final. Apague a última vírgula e clique em Formatar: o status muda para JSON válido, com 31 bytes de tamanho bruto e 4 nós ("Ana", o array tags e suas duas strings). Minificar devolve então a versão compacta para uma requisição ou arquivo de configuração. Lembre-se de que a saída é regenerada a partir do valor analisado: inteiros muito grandes acima de 2^53 − 1 podem perder precisão e uma chave repetida mantém apenas o último valor.

Metodologia

A ferramenta valida e reimprime o JSON com as funções nativas do navegador, JSON.parse() e JSON.stringify(). A gramática é a da RFC 8259 (e da ECMA-404): um documento é um único valor (objeto, array, string, número, true, false ou null), strings e chaves exigem aspas duplas, e comentários, vírgulas finais, NaN, undefined e números com zero à esquerda são rejeitados.

O que fazem os botões e os contadores: “Formatar” reindenta o valor lido com 2 espaços, 4 espaços ou uma tabulação; “Minificar” remove todo espaço opcional. O “tamanho bruto” é o tamanho, em bytes UTF-8, da sua entrada sem espaços nas pontas. O “total de nós” conta cada valor aninhado dentro de objetos e arrays, sem o contêiner externo: {"a":[1,2]} tem 3 nós (o array e seus dois números).
Limites de ler e reimprimir: A saída é gerada de novo a partir do valor lido, então pode diferir da entrada. Inteiros acima de 9.007.199.254.740.991 (2^53 - 1) são arredondados para o double mais próximo: 12345678901234567890 volta como 12345678901234567000. Um número como 1e999 estoura e é impresso como null. Se um objeto repete uma chave, só o último valor sobrevive, e chaves que parecem índices de array ("2", "10") vão para o começo em ordem crescente. Confira esses casos antes de confiar na saída para IDs ou valores monetários exatos.

O que um formatador de JSON não conserta por você

A maior parte da frustração vem de esperar algo que a ferramenta nunca prometeu. Veja cinco casos e o que de fato acontece aqui.

  • Esperar que Formatar conserte um JSON quebrado. Ele só analisa e imprime de novo. Se a entrada for inválida, aparece Erro de sintaxe e a caixa de saída mostra a mensagem de erro do seu navegador, não uma versão corrigida.
  • Colar linhas de log ou JSON Lines. Dois objetos em duas linhas não são um único documento JSON. {"a":1} seguido de {"a":2} falha no começo da linha 2. Cole um registro por vez ou coloque tudo entre [ ], separado por vírgulas.
  • Colar uma string codificada duas vezes. Se o texto começa e termina com aspas e está cheio de barras invertidas, como "{\"id\":7}", é um JSON válido, mas é uma string só. O status mostra JSON válido, os nós são 0 e nada é indentado. Tire antes as aspas externas e as barras.
  • Esperar que o tamanho bruto diminua depois de Minificar. O tamanho bruto é o comprimento em bytes do que você colou, então não muda. O exemplo { "name": "Ana", "tags": ["a", "b"] } tem 37 bytes e a versão minificada, 31. Cole a saída de volta para ver o novo tamanho.
  • Supor que os números mantêm a grafia. Os valores são impressos de novo a partir do valor analisado: 19.90 vira 19.9, 1E2 vira 100 e -0 vira 0. Se os zeros à direita importam, guarde esses valores como strings.

Ferramentas relacionadas

Perguntas frequentes

O JSON que eu colo é enviado para algum servidor? ▼

Esta página não o envia. A leitura e a formatação são feitas por JavaScript no seu próprio navegador, e a página não guarda o texto. O que fica fora da página, como extensões do navegador, um computador compartilhado ou uma gravação de tela, ela não controla. Por precaução, troque qualquer chave de API ou token que você tenha colado em uma ferramenta online em que não confie totalmente.

Por que meu JSON mostra erro de sintaxe? ▼

As causas mais comuns são uma vírgula final (como em {"name": "Ana",}), aspas simples no lugar de duplas, chaves sem aspas, comentários, os valores NaN ou undefined, números com zero à esquerda como 007, e quebras de linha ou tabulações reais dentro de uma string. O texto exato da mensagem vem do seu navegador (Chrome, Firefox e Safari o escrevem de formas diferentes) e normalmente aponta o caractere inesperado ou a posição.

Por que um número grande ou uma chave repetida mudou na saída? ▼

O JSON.parse converte todo número em ponto flutuante de 64 bits, que só é exato até 9.007.199.254.740.991. Inteiros maiores, como IDs de banco de dados de 19 dígitos, perdem os últimos dígitos. Quando a mesma chave aparece duas vezes em um objeto, o valor posterior substitui o anterior sem aviso. Se isso importa para você, guarde esses valores como strings nos dados de origem ou compare a saída com o original.

Dá para abrir tsconfig.json, configurações do VS Code ou arquivos muito grandes? ▼

Arquivos no estilo JSONC ou JSON5 (comentários, vírgulas finais, aspas simples) não são JSON válido e serão rejeitados até que você remova essas partes. Quanto ao tamanho, o limite é a memória e a paciência do navegador: a saída é refeita a cada tecla, então colar vários megabytes pode fazer a página travar por um instante.