Como usar
- Cole o JSON antigo em JSON da esquerda e o JSON novo em JSON da direita.
- Marque Ignorar a ordem dos itens de arrays se os arrays forem conjuntos, como listas de tags.
- Leia a tabela Diferenças. Cada linha dá o Caminho (JSON Pointer) do valor, e copie o JSON Patch quando Verificação do patch disser que ele se aplica.
Como os documentos são comparados
Os dois documentos são comparados pelo valor. A ordem dos nomes em um objeto não importa, porque o JSON define um objeto como um conjunto de membros. A ordem dos itens em um array importa, a menos que você marque a opção, já que um array é uma lista ordenada.
Números são comparados como números, então 1 e 1.0 são iguais. A RFC 8259, seção 6, diz que inteiros de -(2^53)+1 a (2^53)-1 são lidos do mesmo modo por qualquer implementação, e um inteiro mais longo pode ser arredondado ao ser lido.
Caminhos e o patch
Um caminho é um JSON Pointer (RFC 6901): cada passo é um nome ou um índice, separado por uma barra. O primeiro item da lista de tags é /tags/0, e o caminho vazio é o documento inteiro. Uma barra dentro de um nome é escrita como ~1, e um til é escrito como ~0.
O JSON Patch (RFC 6902) usa três operações: add, remove e replace. Os itens de array removidos são retirados do último para o primeiro, para que cada índice continue certo quando é usado, e os itens acrescentados vão para o fim com o índice "-", que a RFC 6902 define como o fim do array.
Ignorar a ordem dos arrays
Com a opção marcada, os itens são pareados pelo valor, qualquer que seja a posição deles. Itens sem par são informados como acrescentados ou removidos. Um array que difere é substituído inteiro no patch, porque um patch que só move itens precisaria saber como eles se moveram. O patch então dá o array na ordem do documento da direita.
Exemplo resolvido: os documentos padrão
O documento da esquerda tem o nome FireToolLand, a versão 1, as tags json e csv, e o campo free com o valor true. O documento da direita tem a versão 2, as tags csv, json e yaml, e o campo license com o valor null. Lidas em ordem, as diferenças são seis: a versão, as duas tags alteradas, a tag yaml acrescentada, o free removido e o license acrescentado.
Com Ignorar a ordem dos itens de arrays marcado, as tags são os mesmos dois itens em outra ordem, então a única diferença de tag é yaml, e o número cai para quatro.
| Resultado | Textos padrão | Ordem ignorada |
|---|---|---|
| Número de diferenças | 6 | 4 |
| Resumo | Acrescentados: 2; removidos: 1; alterados: 3. | Acrescentados: 2; removidos: 1; alterados: 1. |
Perguntas frequentes
Por que a ordem dos itens de um array importa?
Em JSON, um array é uma lista ordenada, então [1,2] e [2,1] são dados diferentes. Marque Ignorar a ordem dos itens de arrays quando o array for um conjunto, como uma lista de tags ou de permissões.
O que significa um caminho como /tags/0?
É um JSON Pointer (RFC 6901): o membro tags e depois o primeiro item dele, porque os índices começam em 0. O caminho vazio significa o documento inteiro, e um nome que contém uma barra é escrito com ~1 no lugar dela.
1 e 1.0 são o mesmo valor?
Sim. Os dois são o número um, então a página não informa diferença. Inteiros maiores que 2^53 podem ser arredondados por um leitor de JSON, então compare identificadores longos como texto.
Para que serve um JSON Patch?
É uma lista de passos (RFC 6902) que um servidor ou uma biblioteca aplica a um documento para obter outro, por exemplo para atualizar um arquivo de configurações guardado. A verificação do patch mostra que os passos dão o documento certo.
Por que um array inteiro é substituído quando a ordem é ignorada?
Com a ordem ignorada, um array alterado não tem um único passo que o transforme no certo sem saber como os itens se moveram. Por isso o patch escreve o array da direita por inteiro.
Meu JSON é enviado para algum lugar?
Não. Os dois textos são lidos e comparados no seu navegador, e nada do que você cola é enviado para o nosso servidor ou guardado lá.
Fontes
- RFC 8259 (em inglês): The JavaScript Object Notation (JSON) Data Interchange Format
- RFC 6901 (em inglês): JavaScript Object Notation (JSON) Pointer
- RFC 6902 (em inglês): JavaScript Object Notation (JSON) Patch
Números e texto verificados pela última vez em terça-feira, 10 de novembro de 2026.