JSON Diff: Compare Objetos JSON

Cole dois documentos JSON para ver exatamente o que mudou. Cada diferença é listada pelo caminho, como $.users[2].email, e formatação ou ordem das chaves nunca geram falsos alarmes.

Roda no seu navegadorSem cadastroNada é enviado

A ordem das chaves é sempre ignorada.

Como usar: JSON Diff

  1. Cole o JSON original à esquerda e o JSON modificado à direita, ou abra dois arquivos.
  2. Erros de sintaxe aparecem abaixo de cada caixa com a linha e a coluna, para você corrigir rapidamente.
  3. Leia a tabela Caminhos alterados: cada linha mostra se um valor foi adicionado, removido ou alterado, com os valores antigo e novo.
  4. Marque Ignorar ordem dos arrays quando as listas forem conjuntos, por exemplo tags ou permissões.
  5. Role até a visualização lado a lado para ver as mudanças no contexto, ou copie a lista de mudanças como JSON.

Por que um diff estrutural de JSON é melhor que um diff de texto

Um diff de texto simples compara caracteres e linhas, então dois arquivos JSON com os mesmos dados podem parecer totalmente diferentes se um estiver minificado, indentado de outro jeito ou com as chaves em outra ordem. Esta ferramenta primeiro analisa os dois documentos e compara os dados: objetos são comparados chave a chave, independentemente da ordem, e números, strings, booleanos e null são comparados pelo valor. Só mudanças reais são reportadas.

Como as mudanças são reportadas

Cada diferença recebe uma localização no estilo JSONPath, como $.owner.email ou $.items[3].price, e um de três tipos:

  • adicionado: a chave ou o elemento do array existe apenas no JSON modificado.
  • removido: existe apenas no JSON original.
  • alterado: existe nos dois, mas o valor é diferente, incluindo mudanças de tipo, como uma string que virou número.

Os arrays são alinhados com um algoritmo de maior subsequência comum (LCS), então inserir um elemento no início de uma lista é reportado como uma única adição, em vez de marcar todos os elementos seguintes como alterados.

Ignorando a ordem dos arrays

Muitas APIs retornam listas cuja ordem não tem significado, como papéis, tags ou IDs. Com Ignorar ordem dos arrays ativado, os arrays são comparados como coleções: um elemento só conta como adicionado ou removido se não tiver um equivalente igual do outro lado. A visualização lado a lado então ordena os elementos dos arrays para que listas iguais fiquem alinhadas.

Usos típicos

Compare respostas de API entre staging e produção, verifique o que uma migração mudou em um arquivo de configuração, revise diferenças entre dois package.json ou tsconfig e depure testes de snapshot.

Perguntas frequentes

A ordem das chaves importa ao comparar JSON?
Não. Objetos JSON não são ordenados, então {"a":1,"b":2} e {"b":2,"a":1} são considerados iguais. A ordem dos arrays importa por padrão, porque arrays são ordenados, mas você pode desativar isso com Ignorar ordem dos arrays.
Meu JSON é enviado para um servidor?
Não. Os dois documentos são analisados e comparados no seu navegador. Nada é enviado pela rede, o que torna a ferramenta segura para respostas de API com tokens ou dados de clientes.
O que significam caminhos como $.users[2].email?
$ é a raiz do documento, .users é uma chave e [2] é o terceiro elemento de um array (os índices começam em 0). Chaves com espaços ou caracteres especiais são escritas entre colchetes, como $["first name"].
1 é igual a 1.0?
Sim. Os dois viram o mesmo número, então não são reportados como diferença. Um número e uma string, como 1 e "1", são diferentes e são reportados como alterados.
Posso comparar JSON com comentários ou vírgulas sobrando no final?
O JSON padrão não permite isso, então essa entrada é sinalizada com a linha e a coluna exatas. Remova os comentários ou as vírgulas, ou limpe o documento antes no Formatador JSON.

Ferramentas relacionadas