Formatador e Validador de JSON

Formate, valide e minifique JSON sem que um número grande mude de valor nem uma chave repetida desapareça. O erro vem com a linha e a coluna. Tudo no seu navegador.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

Tudo no seu navegador. O JSON não é enviado para servidor, não entra em log e não aparece na URL. A leitura não usa eval nem executa o conteúdo.

0 de 1.000.000 caracteres. O resultado acompanha a digitação.

Carregar um exemplo:

Gostou? Mostre pra todo mundo

Gere um card bonito com a marca do ValorFinal para postar nos Stories ou mandar no WhatsApp. Nada que você digitou aparece no card.

Coloque no seu site

Cole o JSON no editor e o resultado aparece ao lado, formatado ou minificado, com os erros apontados por linha e coluna. O número, o texto e a ordem das chaves saem exatamente como entraram. Nada é enviado para servidor.

Como funciona o cálculo

A leitura é feita por um analisador próprio que segue a gramática da RFC 8259. Ele monta uma árvore que guarda o número como ele foi escrito, o texto com as escapadas originais e a ordem das chaves, inclusive quando a mesma chave aparece duas vezes. Escrever de volta mexe apenas no espaço em branco.

Por que não usamos JSON.parse. Um formatador existe para organizar o espaço. Se ele também troca o valor, deixou de ser formatador. O caminho comum, JSON.parse seguido de JSON.stringify, converte todo número para o tipo numérico do JavaScript, que segue o padrão IEEE 754 de dupla precisão e só representa inteiro exato até 253-1. Acima disso o dígito se perde sem nenhum aviso, e é assim que um identificador de pedido volta diferente do que entrou. O mesmo caminho descarta a primeira ocorrência de uma chave repetida.

Para comparar dois JSON linha a linha, use o comparador de texto; para converter entre JSON, CSV, YAML e XML, o conversor de dados; para ler o conteúdo de um token, o decodificador de JWT.

Fórmula

Não há cálculo: há leitura e reescrita. As quatro operações são separadas de propósito, e só as duas do meio são seguras por definição:

  • Validar responde se o texto é JSON, e onde ele deixa de ser.
  • Formatar e minificar mexem apenas no espaço em branco.
  • Transformar (ordenar as chaves, resolver chave repetida) muda o documento, e por isso é sempre uma escolha explícita de quem usa.

O limite de precisão que motiva tudo isso: Number.MAX_SAFE_INTEGER = 2^53 - 1 = 9.007.199.254.740.991

Base: RFC 8259 (o formato JSON), ECMA-404 e a definição de IEEE 754 de dupla precisão, que é a origem do limite de 2^53. Leitura e escrita feitas por analisador próprio, no navegador.

Limitações

  • Um milhão de caracteres e quinhentos níveis de aninhamento. Acima disso a ferramenta recusa com mensagem, em vez de travar a aba.
  • A ferramenta valida a SINTAXE, não o significado. Ela não confere JSON Schema, tipos esperados nem campos obrigatórios do seu sistema.
  • Ordenar as chaves e resolver chave repetida MUDAM o documento. São opções, e a página diz quando foram usadas.
  • A preservação vale dentro desta página. Se o JSON seguir para uma ferramenta que use JSON.parse, o número grande volta a se perder lá.

Guia completo

O que é JSON: estrutura, tipos e erros comuns

Entenda o que é JSON, os tipos de dados (objeto, array, string, número, boolean e null), a diferença entre JSON válido e objeto JavaScript, os erros de sintaxe mais comuns e por que validar antes de usar em uma API.

Coloque a calculadora de JSON Formatter no seu site, de graça

Tem site, blog ou loja virtual? Esta calculadora tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e o cálculo acompanha a regra vigente sozinho.

calculadora de JSON Formatter para sitever todas as calculadoras para site

Calculadoras relacionadas

Guias sobre este tema

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Cálculo auditável, com fórmula e fontes transparentes

Atualizado em . Fontes: ECMA-404 / JSON.org / MDN Web Docs.

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

O que é JSON?

JSON (JavaScript Object Notation) é um formato de troca de dados em texto, fácil de ler por gente e fácil de interpretar por máquina. É o formato mais usado em API REST, em arquivo de configuração e em comunicação entre sistemas. A gramática está na RFC 8259 e na ECMA-404, e não depende de nenhuma linguagem de programação.

Esta ferramenta altera os meus números?

Não, e essa é a diferença dela. A maioria dos formatadores de JSON lê o texto com JSON.parse e escreve de volta com JSON.stringify. Esse caminho converte todo número para o tipo numérico do JavaScript, que só guarda inteiro exato até 9.007.199.254.740.991. Um identificador como 9007199254740993 entra e sai 9007199254740992, em silêncio. Aqui o número é guardado como você escreveu, letra por letra, e devolvido igual. Quando o valor for um desses que não sobreviveria à conversão, a página avisa, para você saber que o problema existe nas outras ferramentas da sua esteira.

O que acontece se a mesma chave aparecer duas vezes?

A RFC 8259 diz que as chaves de um objeto deveriam ser únicas, mas não proíbe a repetição, e cada leitor resolve do seu jeito: o do JavaScript fica com a última e descarta a primeira sem avisar. Aqui as duas são preservadas por padrão, e a página mostra em que linha cada uma está. Você pode escolher ficar com a primeira ou com a última, mas é uma escolha explícita sua, nunca um efeito colateral de formatar.

Por que meu JSON é considerado inválido?

Os erros mais comuns são vírgula sobrando no fim de um objeto ou de um array, aspas simples no lugar de aspas duplas, chave sem aspas, texto que não foi fechado, comentário (JSON não tem comentário), undefined ou NaN (JSON não tem nenhum dos dois, só null), zero à esquerda em número e quebra de linha solta dentro de um texto. A mensagem de erro aqui mostra a linha, a coluna e a linha inteira onde o problema está, com uma seta apontando a posição.

Qual é a diferença entre JSON formatado e JSON minificado?

Só o espaço em branco. O formatado usa indentação e quebra de linha para você ler; o minificado tira tudo o que não é obrigatório, para o arquivo ficar menor na hora de trafegar. Os dois representam exatamente o mesmo documento, e nesta ferramenta os dois preservam o número, o texto e a ordem das chaves como estavam.

Esta ferramenta usa eval para processar o JSON?

Não. Ela não usa eval, não usa Function e também não usa JSON.parse: a leitura é feita por um analisador próprio, escrito para seguir a gramática da RFC 8259 e para preservar o documento. O conteúdo que você cola nunca é executado como código; ele é lido caractere por caractere como texto.

Meu JSON com dados sensíveis é enviado para algum servidor?

Não. Todo o processamento acontece no seu navegador. Nada é enviado para o ValorFinal nem para terceiros, nada entra na URL, nada vai para log e nada é gravado no aparelho. Dá para conferir: desconecte a internet e a ferramenta continua funcionando. Na aba de rede do navegador, nenhuma requisição sai quando você formata.

Existe limite de tamanho?

Sim, um milhão de caracteres e quinhentos níveis de aninhamento. Os dois limites existem para a aba do navegador não travar nem estourar a pilha, e os dois avisam quando são atingidos, em vez de cortar o resultado calado. Até sessenta mil caracteres o resultado acompanha a digitação; acima disso ele sai no clique, porque reprocessar um arquivo grande a cada tecla congela a página.

O que significa a profundidade máxima?

É o nível de aninhamento mais fundo da estrutura. Em {"a":{"b":{"c":1}}} a profundidade é 3. JSON com centenas de níveis costuma indicar um desenho de dados que daria para simplificar, e derruba alguns leitores por estouro de pilha.