Ferramentas JSON

Comparar JSON— Veja o que mudou nos dados

Cole os dois documentos JSON: o resultado é atualizado após uma pausa na digitação. Desative a comparação automática para usar o botão manualmente.

Comparar JSON

+ Adicionados: 2− Removidos: 1Alterados: 7

Atualizado

1 / 10

Visualização somente leitura: a formatação e a ordem seguem as regras de comparação. Os caminhos ignorados ficam ocultos; os originais permanecem intactos.

− JSON original/users/0/id
+ JSON modificado/users/0/id

Carregando comparação…

{
  "users": [
    {
      "id": 1,
      "name": "Ada",
      "role": "reader"
    },
    {
      "id": 2,
      "name": "Lin",
      "role": "editor"
    }
  ],
  "version": 1,
  "updatedAt": "2026-09-01"
}
{
  "users": [
    {
      "id": 2,
      "name": "Lin",
      "role": "admin"
    },
    {
      "id": 1,
      "name": "Ada",
      "role": "reader"
    },
    {
      "id": 3,
      "name": "Sam",
      "role": "reader"
    }
  ],
  "updatedAt": "2026-09-10",
  "active": true
}

As entradas ficam nesta aba do navegador, sem envio nem armazenamento persistente.

Detalhes da estrutura (10)
  • Raiz
    • users
      • 0
        • Alterados

          JSON original /users/0/id

          1

          JSON modificado /users/0/id

          2
        • Alterados

          JSON original /users/0/name

          "Ada"

          JSON modificado /users/0/name

          "Lin"
        • Alterados

          JSON original /users/0/role

          "reader"

          JSON modificado /users/0/role

          "admin"
      • 1
        • Alterados

          JSON original /users/1/id

          2

          JSON modificado /users/1/id

          1
        • Alterados

          JSON original /users/1/name

          "Lin"

          JSON modificado /users/1/name

          "Ada"
        • Alterados

          JSON original /users/1/role

          "editor"

          JSON modificado /users/1/role

          "reader"
      • Adicionados

        JSON original

        Ausente

        JSON modificado /users/2

        {"id":3,"name":"Sam","role":"reader"}
    • Removidos

      JSON original /version

      1

      JSON modificado

      Ausente
    • Alterados

      JSON original /updatedAt

      "2026-09-01"

      JSON modificado /updatedAt

      "2026-09-10"
    • Adicionados

      JSON original

      Ausente

      JSON modificado /active

      true

Uma resposta de API pode chegar com as chaves em outra ordem e continuar contendo os mesmos dados. Este comparador JSON ajuda a conferir uma implantação sem revisar como alteração cada linha que só foi reformatada. Comparar JSON pela estrutura evita conferir cada linha reindentada.

Na comparação JSON de listas, a posição nem sempre identifica o registro. Use o exemplo para alternar entre posição e chave: o diff de JSON deixa de destacar a troca de lugar dos usuários e mantém a mudança de permissão.

Comparar JSON para achar as mudanças relevantes

Reconheça registros mesmo após uma reordenação

Uma API pode retornar os mesmos registros em outra ordem. Se cada objeto tiver um id único, a comparação por chave associa os registros antes de verificar os campos. Uma permissão alterada continua visível sem transformar uma simples reordenação em várias mudanças aparentes. Use posições quando a sequência tiver significado.

Símbolos iguais conectam registros reordenados; um campo alterado aparece destacado em âmbar.

Deixe de fora os campos que mudam a cada resposta

Um novo valor updatedAt pode desviar a atenção de uma mudança de configuração. Exclua /updatedAt para ignorar esse campo e seus descendentes, mantendo as demais diferenças. As exclusões usam caminhos JSON Pointer exatos: selecione apenas o ramo que deseja ignorar.

Duas árvores de dados mostram carimbos de data e hora esmaecidos e uma mudança destacada em outro ramo.

Revise as diferenças em três passos

01

Adicione as duas versões

Cole JSON válido nos dois editores ou carregue o exemplo para explorar a árvore de resultados. A comparação automática atualiza o resultado após uma pausa na digitação.

02

Escolha como associar registros

Mantenha posições para listas ordenadas ou selecione uma chave única, como id, para arrays de objetos. Informe um caminho por linha, como /updatedAt, para excluir campos.

03

Confira e salve o relatório

Abra «Ver comparação»: exclusões aparecem em vermelho e adições em verde. Navegue pelas alterações ou consulte os caminhos originais nos detalhes da estrutura e copie ou baixe o relatório.

Uma revisão por campo

Árvore com os caminhos afetados

Abra os ramos para ler o valor anterior e o novo lado a lado. Cada diferença mostra um JSON Pointer. Registros associados por chave mantêm os caminhos reais dos dois lados, mesmo depois de uma reordenação.

Arrays conforme a identidade dos dados

Por posição, o índice zero é comparado com o índice zero. Por chave, uma propriedade direta como id associa objetos equivalentes; apenas mudar a ordem desses registros não conta como edição.

Relatório com contexto

Copie ou baixe o JSON com contagens e opções de comparação. Os valores são armazenados como strings de código JSON, preservando todos os dígitos de inteiros grandes quando o relatório for lido.

Regras e limites

Sintaxe estrita e números exatos
Comentários, vírgulas finais e chaves duplicadas interrompem a comparação. String e número são diferentes; null e campo ausente também. Escritas numéricas equivalentes, como 1 e 1.0, são iguais sem conversão para ponto flutuante.
Chave única em cada array
Todo objeto precisa da propriedade escolhida como string ou número único. Chaves ausentes ou repetidas e arrays que misturam objetos com valores simples geram erro no modo por chave. Arrays sem objetos continuam por posição. 1 e "1" identificam registros diferentes.
Exclusões incluem os descendentes
Informe um JSON Pointer exato por linha, como /updatedAt. Em nomes de chave, / vira ~1 e ~ vira ~0. Não há curingas nem JSONPath. No modo por chave, a correspondência com qualquer um dos índices reais exclui o par de ramos.
Contagem por ramo alterado
Adicionar ou remover uma subárvore inteira conta uma vez; uma troca de tipo também. Não são geradas operações de movimentação. O arquivo exportado é um relatório de revisão, não um patch RFC 6902 executável. Com exclusões internas, os contêineres adicionados ou removidos são expandidos para contar apenas os filhos não excluídos.
Limites de processamento
Cada entrada aceita 500.000 unidades UTF-16, 50.000 nós e profundidade 100; cada número aceita 1.000 caracteres. Mais de 5.000 diferenças interrompem o processo sem relatório parcial. A árvore mostra 100 por vez; a exportação inclui todas.

Comparar JSON: perguntas frequentes

Como iniciar a comparação de dois documentos?

Cole as duas versões: a comparação começa após cerca de 400 ms sem digitar. Desative o modo automático para usar o botão Comparar. Relatórios desatualizados não podem ser copiados nem baixados.

Por que usar um diff estrutural em vez de texto?

A comparação textual acompanha linhas. Aqui, as chaves, os tipos e os valores são comparados depois da análise do JSON. A indentação não interfere, mas espaços dentro de strings continuam relevantes.

A posição das chaves altera o resultado?

Não. Objetos são associados pelo nome das chaves, portanto uma simples reordenação não altera as contagens.

Como comparar arrays que foram reordenados?

No modo padrão, os índices são comparados e a reordenação aparece como diferença. Para arrays de objetos com ID único, selecione o modo por chave. Arrays de valores simples seguem por posição.

É possível comparar inteiros grandes sem arredondar?

Sim. Os números mantêm o texto original e são comparados por seu valor decimal exato. Inteiros vizinhos acima da faixa segura do JavaScript continuam distintos, e o relatório os registra como strings de JSON.

Encontrou um resultado de comparação incorreto?

Comparar JSON agora

Carregue o exemplo e mude para o modo por chave para comparar JSON sem que uma lista reordenada apareça como alteração.