Skip to content
jsoncsvonline

Comparação JSON 100% no cliente

Comparar JSON

Compare dois objetos JSON instantaneamente e encontre adições, remoções e alterações.

  • Zero uploads para servidores: comparação 100% no seu navegador
  • Diff estrutural profundo em objetos e matrizes aninhadas
  • Opções inteligentes de ordem de chaves e comparação de arrays
Array comparison:
JSON Original (Esquerda) (Left / Before)
JSON Modificado (Direita) (Right / After)

Motor de comparação estrutural

Compare diferenças semânticas reais de JSON, sem ruído de linhas.

Utilitários tradicionais de diff de texto falham quando chaves estão ordenadas de forma diferente ou quando o arquivo está minificado. Nosso comparador avalia a árvore de dados analisada para destacar modificações reais.

Comparação independente da ordem das chaves

Segundo o RFC 8259, a ordem das chaves em objetos JSON não altera o dado. Esta ferramenta ignora diferenças estéticas de ordenação e foca nas alterações reais.

Diff estrutural recursivo profundo

Navega por níveis arbitrários de aninhamento em objetos e arrays complexos, gerando o caminho JSON exato para cada valor adicionado, removido ou alterado.

Estratégias flexíveis para comparação de arrays

Compare arrays sequencialmente por índice ou como conjuntos não ordenados, permitindo comparar respostas de APIs mesmo com ordens dinâmicas.

Como comparar arquivos JSON online

Comparar arquivos JSON com ferramentas de texto baseadas em linhas (como git diff) gera muitos falsos positivos, pois o espaçamento e a ordem das chaves podem mudar sem alterar os dados reais.

Nosso mecanismo de comparação estrutural resolve esse problema em três etapas automáticas:

  1. Normalização de sintaxe: Ambos os documentos são lidos em representações estruturadas na memória conforme a RFC 8259.
  2. Varredura recursiva por caminhos: Cada chave e elemento de array recebe um caminho JSON explícito (ex: users[0].address.city).
  3. Saída de deltas categorizados: Adições, remoções e alterações de tipos e valores são isoladas e destacadas com etiquetas visuais.

Ordem de chaves em objetos (Conformidade RFC 8259)

De acordo com a especificação oficial (RFC 8259), um objeto JSON é uma coleção desordenada de pares nome/valor. Portanto, {"a": 1, "b": 2} e {"b": 2, "a": 1} representam exatamente os mesmos dados.

Por padrão, nossa ferramenta ativa o modo Ignorar ordem das chaves para evitar ruído. Se sua aplicação exigir uma ordem estrita, desmarque a opção para apontar mudanças de posição.

Comparação de arrays: ordenados vs desordenados

Diferente dos objetos, os itens de um array JSON têm ordem definida. Contudo, em muitas APIs REST, listas representam conjuntos (como tags ou permissões) onde a ordem não importa.

Nossa ferramenta inclui a opção Ignorar ordem de arrays. Quando ativa, os itens são comparados por igualdade profunda, evitando uma cascata de falsas alterações se um item for adicionado no início.

Exportação e compartilhamento de relatórios de diferenças

Ao concluir a comparação, baixe o relatório no formato JSON Patch (RFC 6902) ou como changelog em Markdown para pull requests e revisões de código. Tudo roda localmente no navegador com total sigilo.

Comparando JSON via código em Python e Node.js

Se você precisa automatizar a comparação de JSON em rotinas de teste ou pipelines de CI/CD, veja os padrões da indústria:

Python (DeepDiff)

import json
from deepdiff import DeepDiff

# Load JSON files or API responses
with open('original.json') as f1, open('modified.json') as f2:
    original_data = json.load(f1)
    modified_data = json.load(f2)

# Deep structural diff with key-order independence
differences = DeepDiff(original_data, modified_data, ignore_order=False)

print("Added keys:", differences.get('dictionary_item_added', {}))
print("Removed keys:", differences.get('dictionary_item_removed', {}))
print("Values changed:", differences.get('values_changed', {}))
print("Type changes:", differences.get('type_changes', {}))

Node.js / TypeScript (fast-json-patch)

import fs from 'node:fs';
import { compare } from 'fast-json-patch';

// Read and parse documents locally
const original = JSON.parse(fs.readFileSync('original.json', 'utf8'));
const modified = JSON.parse(fs.readFileSync('modified.json', 'utf8'));

// Generate standard RFC 6902 JSON patch differences
const delta = compare(original, modified);
console.log('Structured differences:', delta);
// Output: [ { op: 'replace', path: '/user/age', value: 26 }, ... ]

Comparação de JSON no terminal com jq e diff

Em terminais Unix e macOS, normalize a ordem das chaves com jq -S antes de rodar o comando diff:

# Sort keys alphabetically with jq, then run unified diff
diff -u <(jq -S . original.json) <(jq -S . modified.json)

Precisa limpar seu JSON antes de comparar? Formate seus dados com o Formatador JSON, diagnostique a sintaxe com o Validador JSON, ou converta registros em planilhas com o Conversor de JSON para CSV.

FAQ

Perguntas frequentes

O que é um JSON Diff e como difere do diff comum?

Ele avalia a árvore estrutural (AST) em vez de linhas brutas de texto, evitando falsos positivos decorrentes de reordenação de chaves ou recuos.

A ordem das chaves é ignorada?

Sim, por padrão, pois de acordo com o padrão RFC 8259 a ordem das chaves em um objeto não altera seu significado semântico.

Meus dados são enviados para algum servidor?

Não. Toda a conversão roda em um Web Worker diretamente no seu navegador, no seu dispositivo. Você pode comprovar abrindo as ferramentas de desenvolvedor (F12) na aba Rede (Network) e executando uma conversão: nenhuma requisição é enviada. Por isso, não há limite de tamanho nem cotas diárias.

Existe um limite de tamanho de arquivo?

Não há limites artificiais. Os dados são lidos em pedaços (chunks) e transmitidos como fluxo (stream), mantendo o consumo de memória sempre baixo e estável mesmo com arquivos de muitos gigabytes.

É gratuito e preciso criar uma conta?

É totalmente gratuito, sem necessidade de cadastro, sem período de testes e sem planos pagos.

Conversores e ferramentas relacionadas