Comparador de diferenças JSON
Compare dois documentos JSON e veja instantaneamente quais chaves foram adicionadas, removidas ou alteradas, listadas por caminho de chave. Objetos e arrays são percorridos recursivamente, e até divergências de tipo são exibidas como alterações. Tudo é processado no seu navegador, sem envio a nenhum servidor.
O que é um comparador de diferenças JSON
Um comparador de diferenças JSON confronta dois documentos JSON estrutura por estrutura e mostra instantaneamente quais chaves foram adicionadas, quais foram removidas e quais valores mudaram. Ele se destaca em situações em que ler o texto completo lado a lado já não é viável pela quantidade de informação: uma resposta de API cujo formato mudou entre versões, ou um arquivo de configuração que difere de um ambiente para outro. Esta ferramenta percorre objetos e arrays recursivamente e reporta as diferenças no nível do caminho de chave, permitindo localizar com precisão onde um valor mudou mesmo dentro de um JSON profundamente aninhado.
Para que a comparação funcione, os dois documentos precisam ser JSON estruturalmente válido. Se alguma das entradas tiver um erro de sintaxe — uma vírgula faltando, uma aspa não fechada, e assim por diante — a ferramenta indica qual delas, A ou B, é inválida, em vez de tentar calcular uma diferença. Também vale entender as duas regras de pareamento distintas aplicadas por esta ferramenta: as chaves de objetos são pareadas pelo nome, enquanto os elementos de arrays são pareados por índice (sua ordem de aparição). Ter isso em mente ajuda a interpretar por que uma determinada chave é sinalizada como "alterada" em vez de "adicionada" ou "removida".
Como comparar JSON com o comparador de diferenças JSON
- Cole o JSON de origem (A) Cole ou digite o texto JSON na primeira caixa. Você pode copiar um arquivo de configuração ou resposta de API existente sem reformatação alguma.
- Cole o JSON de destino (B) Cole a versão "depois", ou o JSON de um ambiente diferente, na segunda caixa. Qual documento você coloca em A e qual em B determina a direção reportada para as chaves "adicionadas" e "removidas".
- Experimente os dados de exemplo (opcional) Clique em "Carregar exemplo" para preencher ambas as caixas com um exemplo que inclui adições, remoções e alterações, permitindo ver imediatamente o formato do resultado.
- Leia os resultados da diferença As chaves removidas, adicionadas e alteradas são listadas junto com seus caminhos de chave. Para chaves alteradas, os valores antes e depois são exibidos lado a lado para que você leia a diferença rapidamente.
- Limpe as entradas quando necessário Use o botão "Limpar" para esvaziar ambas as caixas e começar a comparar um novo par de documentos JSON.
Dicas para aproveitar melhor
- Os caminhos de chave são exibidos em notação de ponto e colchete, como `user.address[0].city`, permitindo localizar de imediato qual valor aninhado mudou, não importa o quão profunda seja a estrutura do JSON.
- Os arrays são comparados pareando elementos pelo mesmo índice. Note que apenas reordenar os elementos de um array fará com que todos eles sejam detectados como alterados.
- Se a mesma chave contém uma string em um documento e um objeto no outro, essa divergência de tipo também é reportada como alteração, exibindo os dois valores brutos lado a lado.
- Ao comparar respostas de API antes e depois de um deploy, remova antes campos que sempre mudam, como carimbos de data/hora ou IDs de requisição, para focar apenas nas diferenças que realmente importam.
- Mesmo em um JSON com uma quantidade enorme de valores inalterados, apenas a contagem de folhas coincidentes é exibida, mantendo o resultado legível em vez de sobrecarregado.
Casos de uso
Detectar alterações indesejadas em respostas de API
Salve uma resposta de API antes e depois de um deploy do backend e compare-as aqui para detectar precocemente adições, remoções ou mudanças de tipo não intencionais, antes que cheguem aos usuários em produção.
Comparar arquivos de configuração entre ambientes
Compare o config.json ou package.json de staging e produção para identificar variáveis de ambiente ausentes ou divergências de versão que passariam despercebidas.
Explicar uma diferença durante a revisão de código
Ao revisar um payload de migração ou uma definição de esquema em formato JSON, compartilhe diretamente a lista de diferenças gerada em vez de descrever as mudanças verbalmente ou em um longo tópico de comentários.
Depurar testes de instantâneo com falha
Compare um instantâneo (snapshot) JSON gerado por um teste automatizado com o valor esperado para identificar rapidamente qual campo exato causou a falha do teste.
Validar payloads de webhooks de terceiros
Compare um payload real recebido de um webhook com um exemplo documentado para confirmar que ele realmente corresponde à estrutura descrita na especificação da API.
Glossário
- Caminho de chave
- Uma string que representa o percurso da raiz de um documento JSON até um valor específico, escrita em notação de ponto e colchete, como `user.address[0].city`. Os resultados da diferença são agrupados e exibidos neste nível.
- Aninhamento
- Uma estrutura em que um objeto ou array contém outros objetos ou arrays em seu interior. Quanto mais profundo o aninhamento, mais difícil é detectar alterações apenas visualmente.
- Valor folha
- Um valor terminal em uma árvore JSON que não se ramifica mais — uma string, número, booleano ou null. No fim das contas, uma comparação de diferenças se resume a parear valores folha entre si.
- Divergência de tipo
- Uma situação em que o valor no mesmo caminho de chave é de um tipo de dado (por exemplo, uma string) em um documento e de um tipo diferente (por exemplo, um objeto) no outro. Esta ferramenta também reporta divergências de tipo como alterações.
- Erro de sintaxe
- Um texto malformado que faz o JSON.parse falhar. Uma vírgula faltando ou uma aspa não fechada são exemplos típicos.
- JSONPath
- Uma especificação de linguagem de consulta para endereçar valores dentro de um documento JSON. A notação de caminho de chave usada nesta ferramenta é, conceitualmente, uma versão simplificada aparentada à sintaxe do JSONPath.
Perguntas frequentes
Curiosidade — Como o pareamento de chaves difere entre o diff de CSV e o de JSON
Nosso comparador de diferenças CSV compara linhas e células usando uma única coluna-chave designada para identificar cada linha. O JSON não possui uma estrutura plana de linhas e colunas — permite objetos aninhados e arrays —, então, embora ambas as ferramentas sejam chamadas de "comparadores de diferenças", o algoritmo de pareamento subjacente é bastante diferente. Em vez de uma coluna-chave, esta ferramenta usa um "caminho de chave" construído recursivamente da raiz até cada folha como unidade de comparação.
Os arrays são a parte mais delicada ao comparar JSON. Uma linha de CSV pode ser identificada de forma única pelo valor de sua coluna-chave, mas os elementos de um array JSON não possuem nenhum identificador garantido. Esta ferramenta simplesmente pareia elementos por índice (ordem de aparição), um design mais adequado para rastrear mudanças na estrutura de um objeto ou em valores primitivos — como em arquivos de configuração ou respostas de API — do que para rastrear adições e remoções dentro do conteúdo de um array.
Na prática, uma ideia semelhante aparece em pipelines de integração contínua que verificam automaticamente se o contrato de resposta de uma API REST mudou. Esta ferramenta prioriza a conveniência de rodar inteiramente no navegador, mas o conceito subjacente se sobrepõe a testes de instantâneo (snapshot testing) e testes de contrato (contract testing): detectar diferenças na estrutura JSON de forma mecânica é um desafio recorrente em várias etapas do desenvolvimento de software.