Comparador de JSON: diff de estrutura e de valores

Compare duas estruturas JSON em tempo real e identifique na hora as chaves adicionadas, removidas ou alteradas, com formatação automática.

Comparar dois arquivos JSON: como o diff é calculado

A ferramenta analisa os dois JSON e os percorre chave por chave: cada caminho (por exemplo settings.theme) é classificado como adicionado, removido, modificado ou de tipo alterado. A ordem das chaves é ignorada, mas as listas são comparadas posição por posição.

O método

  • Cada texto é lido com o analisador JSON padrão do navegador. Em caso de erro de sintaxe (vírgula final, aspas simples, comentário), a mensagem de erro é exibida e nenhuma comparação é feita.
  • Os objetos são comparados sobre a união de suas chaves: uma chave presente apenas à esquerda é “removida”, apenas à direita “adicionada”. Os valores presentes dos dois lados são comparados recursivamente.
  • Dois valores simples diferentes dão “modificado”; um número que virou texto (1 e "1") dá “tipo alterado”.
  • As listas são tratadas como objetos indexados: o caminho tags.3 designa o 4º elemento.

Exemplo

Com os dois JSON de exemplo, a ferramenta encontra 7 diferenças: appName, version, settings.theme, settings.notifications e settings.maxItems modificados (50 vira 100), settings.cacheEnabled adicionado e tags.3 ("ai") adicionado. A chave active, idêntica, não aparece.

Limites a conhecer

  • Um elemento removido no início de uma lista desloca todos os seguintes: ["a","b","c"] comparado a ["b","c"] mostra duas modificações e uma remoção, não uma única remoção.
  • Os números são lidos em dupla precisão: acima de 9.007.199.254.740.991, dois inteiros diferentes podem ser considerados iguais. Compare os identificadores longos como texto.
  • Se uma chave aparece duas vezes no mesmo objeto, apenas o último valor é considerado. 1.0 e 1 são considerados iguais.
  • O botão de formatação reindenta os dois textos com 2 espaços; a comparação é feita no navegador, sem envio de dados.

Fontes e datas: formato JSON definido pela RFC 8259 (dezembro de 2017), cuja seção 6 limita a interoperabilidade dos inteiros ao intervalo ±(2⁵³ − 1) (verificado em 14/10/2026).

Perguntas frequentes

A ordem das chaves importa na comparação?

Não. {"a":1,"b":2} e {"b":2,"a":1} são considerados idênticos, pois a ferramenta compara as chaves pelo nome. A RFC 8259 aliás esclarece que a ordem dos membros de um objeto não tem significado garantido.

Por que uma lista reordenada mostra tantas diferenças?

As listas são comparadas posição por posição. Se um elemento é removido no início, cada elemento seguinte muda de posição: ["a","b","c"] contra ["b","c"] dá duas modificações e uma remoção.

O que significa “tipo alterado”?

A mesma chave contém um valor de tipo diferente nos dois lados, por exemplo o número 1 à esquerda e o texto "1" à direita. É uma fonte frequente de bugs entre uma API e seu cliente.

Por que meu JSON é recusado?

A ferramenta aplica a sintaxe JSON estrita: aspas duplas obrigatórias, sem vírgula depois do último elemento, sem comentários. A mensagem de erro do navegador costuma indicar a posição do caractere com problema.

A ferramenta é realmente gratuita?

Sim, todas as ferramentas do Kristools são 100% gratuitas e acessíveis sem cadastro.

Meus dados estão protegidos?

Sim. Todo o processamento é feito diretamente e com segurança no seu navegador. Nenhum dado pessoal é enviado para os nossos servidores.