Comparar JSON ignorando a ordem das chaves

Dois objetos JSON podem ser equivalentes mesmo quando suas propriedades aparecem em outra ordem. Uma comparação de texto trata essa reorganização inofensiva como alteração; uma comparação semântica não.

Objetos e arrays seguem regras diferentes

A ordem das propriedades de um objeto não tem significado semântico, portanto elas devem ser associadas por nome. A ordem de um array geralmente é significativa, então cada valor deve permanecer ligado ao índice, salvo se a aplicação definir outra regra de identidade.

Transforme valores em caminhos estáveis

Caminhos como $.cliente.endereco.cidade ou $.itens[2].preco fornecem uma coordenada estável para cada valor primitivo. Compará-los revela inclusões, remoções e alterações sem ruído de indentação ou ordem de chaves.

  1. Interprete primeiro os dois documentos.
  2. Ordene as chaves dos objetos de forma determinística.
  3. Preserve os índices dos arrays.
  4. Compare o valor de cada caminho resultante.

Saiba quando o pré-processamento é necessário

Datas geradas, IDs de requisição e arrays sem ordem podem exigir uma regra explícita para ignorar ou ordenar. Aplique e documente essas regras antes da comparação; caso contrário, o resultado não poderá ser reproduzido.

Privado desde a concepção

Funciona no seu navegador

Seus arquivos não são enviados

Funciona sem uma conta