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 linha | não |
| Ordem das chaves num objeto | não, por padrão |
| Ordem dos elementos num array | sim |
| Um valor que mudou | sim |
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.