Comparer du JSON en ignorant l’ordre des clés

Deux objets JSON peuvent être équivalents même si leurs propriétés apparaissent dans un ordre différent. Une comparaison de texte considère ce réordonnancement inoffensif comme un changement ; une comparaison sémantique l’ignore.

Les objets et les tableaux suivent des règles différentes

L’ordre des propriétés d’un objet n’a pas de sens sémantique ; elles doivent donc être associées par nom. L’ordre d’un tableau est généralement significatif et chaque valeur reste liée à son index, sauf si l’application définit une autre règle d’identité.

Aplatissez les valeurs en chemins stables

Des chemins comme $.client.adresse.ville ou $.articles[2].prix donnent une coordonnée stable à chaque valeur primitive. Leur comparaison révèle les ajouts, suppressions et changements sans le bruit de l’indentation ou de l’ordre des clés.

  1. Analysez d’abord les deux documents.
  2. Triez les clés des objets de manière déterministe.
  3. Conservez les index des tableaux.
  4. Comparez la valeur de chaque chemin obtenu.

Sachez quand un prétraitement est nécessaire

Les horodatages générés, identifiants de requête et tableaux non ordonnés peuvent nécessiter une règle explicite d’exclusion ou de tri. Appliquez et documentez ces règles avant la comparaison ; sinon, le résultat ne pourra pas être reproduit.

Confidentiel par conception

Fonctionne dans votre navigateur

Fichiers jamais téléversés

Fonctionne sans compte