100 % local — seus dados nunca saem do seu navegador

Diff JSON — veja qual valor mudou

Compare dois documentos JSON. A indentação e a ordem das chaves são neutralizadas antes: o que você vê é o que difere mesmo, até o último algarismo.

Instantâneo Privado Zero cookies

Original

Modificado

Diferenças

O que esta ferramenta faz

Ela normaliza os dois lados — indentação de dois espaços, chaves ordenadas —, depois os compara linha a linha e mostra o resultado como diff unificado:

@@ -2,4 +2,4 @@
   "host": "localhost",
-  "port": 8080,
+  "port": 3000,
   "tls": true

- é o original, + o modificado, e a linha @@ dá a região. É o formato que git diff e patch falam.

O que conta como diferença

diferença?
Indentação, quebras de linhanão
Ordem das chaves num objetonão, por padrão
Ordem dos elementos num arraysim
Um valor que mudousim

Objetos e arrays são tratados de forma diferente porque o JSON os trata de forma diferente: um objeto é um conjunto não ordenado de pares, um array é uma sequência. Reordenar as chaves de um objeto dá o mesmo valor; reordenar os elementos de um array dá outro.

Até o último dígito

{ "id": 12345678901234567890 }
{ "id": 12345678901234567891 }

Estes dois documentos diferem, e esta ferramenta diz isso.

Vale escrever porque nem sempre foi assim. Normalizar os dois lados com uma análise JSON comum fazia cada número passar por um ponto flutuante de dupla precisão, e os dois identificadores — vinte dígitos, diferentes só no último — se fundiam num mesmo valor. O diff voltava vazio, o que se lê como nenhuma diferença.

Um diff vazio é uma afirmação, não um dar de ombros. Uma ferramenta de comparação é justamente aquela a quem se pede ver o que o olho não vê: agora os dois lados são lidos sem perda e comparados como estão escritos.

Chaves repetidas são sinalizadas

Se um dos dois documentos repete uma chave, a comparação para e diz isso, exatamente como faz o formatador JSON. Ficar só com a última ocorrência de cada uma — o que a maioria dos analisadores faz sem ruído — deixaria uma diferença real entre os arquivos evaporar antes mesmo de começar.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

Por que um JSON reordenado aparece como idêntico?
Porque um objeto JSON é um conjunto não ordenado de pares nome/valor: dois documentos cujas chaves aparecem em outra ordem carregam o mesmo valor. Os dois lados são ordenados antes da comparação. Desligue a opção se o que você quer é ver o reordenamento em si — antes e depois de uma ferramenta que reescreveu o arquivo, por exemplo.
Por que elementos de array reordenados são uma diferença?
Porque a ordem de um array *faz parte* do seu valor. `["read", "write"]` e `["write", "read"]` são dois valores JSON diferentes, e um comparador que escondesse isso esconderia uma mudança na ordem das migrações, das etapas de um pipeline, de qualquer coisa sequencial.
E se a mesma chave aparecer duas vezes num dos arquivos?
Ela é sinalizada em vez de arbitrada em silêncio — a mesma resposta que o formatador JSON dá. Comparar dois documentos mantendo só a última ocorrência de cada chave repetida deixaria uma diferença real sumir entre os dois arquivos.

Conversores relacionados