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.
- Interprete primeiro os dois documentos.
- Ordene as chaves dos objetos de forma determinística.
- Preserve os índices dos arrays.
- 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.