Mode d’emploi
- Collez le JSON d’origine à gauche et le JSON modifié à droite, ou essayez l’exemple.
- Choisissez comment comparer les tableaux : par position ou en faisant correspondre les éléments, afin qu’un élément inséré ne soit signalé qu’une fois.
- Consultez les différences sous forme de liste ou côte à côte. Chacune possède un chemin depuis la racine ($).
- Copiez le rapport pour le coller dans un ticket ou une revue de code.
Fonctionnement
Les deux documents sont analysés et comparés en tant que données, et non en tant que texte. Les objets sont comparés clé par clé : l’ordre des clés, les espaces et l’indentation n’ont donc pas d’importance. Les nombres sont comparés par valeur, ainsi 1 et 1.0 sont égaux.
Chaque différence possède un chemin écrit comme une expression JSONPath : $ représente la racine, .name une propriété, [2] un index de tableau, et les clés qui ne sont pas des noms simples sont mises entre guillemets, comme dans $["first-name"]. Quatre types de différence sont signalés : ajout (présent uniquement à droite), suppression (présent uniquement à gauche), modification (même type, valeur différente) et changement de type (par exemple le nombre 44.9 est devenu la chaîne "44.90", ou une valeur est devenue null). Lorsqu’un objet ou un tableau entier est ajouté ou supprimé, il est signalé une seule fois à son propre chemin plutôt que champ par champ.
Par défaut, les tableaux sont comparés par position : l’élément 0 avec l’élément 0, l’élément 1 avec l’élément 1. Si un élément est inséré au début, tous les éléments suivants semblent alors modifiés. « Associer les éléments déplacés » commence par aligner les deux tableaux à l’aide de la plus longue sous-séquence commune d’éléments égaux, de sorte qu’une insertion ou une suppression n’est signalée qu’une seule fois et que les éléments restants sont appariés. Les éléments ajoutés utilisent leur index à droite, les éléments supprimés leur index à gauche. La correspondance est désactivée pour les très grands tableaux (plus d’environ 2 millions de paires d’éléments), qui sont alors comparés par position.
Les chemins des clés dans la liste sont triés par ordre alphabétique au sein de chaque objet. Jusqu’à 2 000 différences sont affichées ; le rapport copié contient toujours toutes les différences.
Exemples
Vérifier une modification d’API
Comparez la réponse d’hier et d’aujourd’hui pour la même commande. Le diff montre que $.status est passé de "pending" à "shipped", que $.total a changé de type (nombre vers chaîne), que $.coupon a été supprimé et que $.customer.phone a été ajouté.
Dérive de configuration
Collez la configuration JSON de la préproduction et de la production. Comme l’ordre des clés est ignoré, seules les différences réelles, par exemple $.cache.ttl 300 → 60, apparaissent, même si les fichiers ont été enregistrés par des outils différents.
Listes avec un élément inséré
Une liste de produits a reçu un nouvel élément en première position. En mode « Par position », chaque produit semble modifié ; avec « Faire correspondre les éléments déplacés », le résultat est un seul « Ajout de $[0] ».
Foire aux questions
Quelle est la différence avec un diff texte ?
Un diff texte compare les lignes, donc la réorganisation des clés ou le reformatage apparaît comme des modifications. Cet outil compare les données analysées : seules les différences de valeurs, de types et de structure sont signalées.
Pourquoi un tableau affiche-t-il de nombreux changements après une seule insertion ?
En mode « Par position », les éléments sont comparés au même index, et une insertion décale tous les éléments suivants. Passez à « Faire correspondre les éléments déplacés » pour d’abord aligner les éléments identiques.
« 1 » et 1 sont-ils traités comme égaux ?
Non. L’un est une chaîne et l’autre un nombre, la différence est donc signalée comme un changement de type. Les valeurs de même type sont comparées exactement.
Puis-je comparer de très gros fichiers ?
Les fichiers de quelques mégaoctets fonctionnent, mais tout est traité dans la mémoire de votre navigateur ; les très gros documents peuvent donc être lents sur mobile.
Confidentialité
Les deux documents sont analysés et comparés uniquement dans votre navigateur. Rien n’est téléversé, stocké ni inclus dans les statistiques.