Saltar para o conteúdo
4all.tools

Compare documentos JSON online

Compare dois documentos JSON estritos pelos valores. Confira adições, remoções e alterações com diagnósticos localizados e pré-visualizações limitadas.

Espaço de trabalho da ferramenta

Comparar documentos JSON

É necessário JavaScript para comparar JSON no seu navegador.

Insira texto JSON estrito para comparar.

Insira texto JSON estrito para comparar.

  • Compare valores JSON pelo significado, independentemente dos espaços ou da ordem das chaves dos objetos.
  • Os itens dos arrays são comparados por posição.
  • Cada entrada pode conter até 1.000.000 unidades de código UTF-16.

A comparação é processada localmente no seu navegador. O JSON não é enviado a um servidor.

Ações de comparação

Ainda não há uma comparação.

Ainda não há uma comparação.

Compare dois documentos JSON

Cole o documento anterior em JSON anterior e o mais recente em JSON novo; depois, selecione Comparar. O resultado lista cada alteração semântica, com o caminho JSON e os valores anterior e novo. O resumo conta adições, remoções e alterações separadamente. Uma propriedade nova é uma adição, uma propriedade ausente é uma remoção e um valor diferente em um caminho existente é uma alteração.

Este exemplo tem duas adições e duas alterações:

{
  "perfil": { "ativo": true, "regiao": "oeste" },
  "marcadores": ["azul", "antigo"]
}
{
  "marcadores": ["azul", "novo", "extra"],
  "perfil": { "regiao": "oeste", "ativo": false },
  "nota": null
}

As adições são $.nota e $.marcadores[2]. As alterações são $.perfil.ativo e $.marcadores[1]. O resumo é 2 adições, 0 remoções, 2 alterações e 4 no total. Reordenar as chaves de perfil não cria diferenças.

Como os valores JSON são comparados

Espaços em branco e ordem das propriedades de objetos não afetam a comparação. Os itens dos arrays são associados pelo índice; inserir um item perto do início pode alterar os valores de várias posições seguintes. Uma propriedade ausente é diferente de uma propriedade com valor null; null, a string "null" e uma string vazia também são valores distintos.

Quando um valor muda para outro tipo JSON, a ferramenta registra uma alteração no caminho correspondente, sem listar cada diferença dentro do valor substituído:

{"perfil":{"nome":"Ada","funcoes":["leitor","editor"]}}
{"perfil":"arquivado"}

Isso corresponde a uma alteração em $.perfil. A subárvore do objeto anterior e a nova string são os dois valores desse registro.

JSON estrito e precisão numérica

As duas entradas devem ser JSON estrito. Comentários, vírgulas finais, strings com aspas simples e nomes de propriedade duplicados são rejeitados. Os diagnósticos indicam qual entrada tem o problema e incluem linha, coluna ou caminho somente quando o analisador fornece essa informação. A lista pode indicar que nem todos os diagnósticos foram exibidos.

Durante a comparação, os números JSON são representados como números JavaScript. Números muito grandes ou com muitas casas podem perder precisão durante a análise; um aviso aparece quando o analisador detecta esse risco. A comparação usa os valores JSON representados, não números matemáticos de precisão arbitrária nem a grafia original do número.

Limites de entrada, operação e pré-visualização

Cada entrada aceita até 1.000.000 unidades de código UTF-16. A análise também limita a profundidade a 200 níveis, os nós a 100.000, os diagnósticos a 100 e o trabalho de análise a 1.000.000 unidades por documento. A comparação tem um orçamento de 1.000.000 unidades de trabalho e aceita no máximo 1.000 registros de alteração. A apresentação completa é limitada a 2.000.000 unidades UTF-16, e uma operação pode aguardar até 15 segundos pela resposta do Worker.

Cada valor mostra uma pré-visualização JSON completa de até 512 unidades UTF-16. Para valores maiores, aparece um resumo com o tipo JSON e a quantidade de itens, chaves ou unidades de código; o valor completo continua sendo comparado. Os resultados aparecem em páginas de 50 linhas, mas a contagem abrange a comparação inteira. Se um limite for alcançado, reduza a entrada ou compare uma alteração menor.

Processamento local e cancelamento

A análise e a comparação são executadas localmente no navegador. O texto das entradas não é enviado a um servidor da aplicação. Selecione Cancelar para interromper uma comparação em andamento; os dois campos de texto são mantidos. Esta ferramenta não salva as entradas automaticamente.