JSON Diff fait référence à la comparaison de différences entre deux données JSON pour trouver les champs ajoutés, supprimés et modifiés. Dans le développement quotidien, nous avons souvent besoin de savoir "en quoi exactement deux JSON diffèrent" : ce qui a changé dans la structure de réponse avant et après les mises à jour d'API, où différent les configurations de deux environnements, dans quel champ les résultats réels des tests automatisés divergent des valeurs de base attendues. La vérification manuelle ligne par ligne est lente et sujette aux erreurs ; les outils JSON Diff peuvent automatiquement surligner les différences.
Les comparaisons de différences JSON suivent généralement deux approches. L'une est le "diff textuel" (textual diff) : JSON est formaté en texte multiligne standardisé puis comparé ligne par ligne de manière similaire à Git Diff, affichant intuitivement les ajouts, suppressions et modifications de chaque ligne. L'autre est le "diff sémantique/structurel" (structural diff) : JSON est analysé en une structure arborescente et les valeurs et types sont comparés un par un selon le chemin de champ (par ex. user.address.city), sans être influencés par des facteurs de formatage tels que l'ordre d'écriture des champs ou l'indentation. Cet outil propose à la fois la vue texte et la vue sémantique, commutables selon les besoins.
Pourquoi formater avant de comparer ? Parce que les mêmes données peuvent être formatées complètement différemment (une ligne vs plusieurs lignes, 2 espaces vs 4 espaces). Une comparaison directe du texte d'origine générerait un grand nombre de "fausses différences" dues aux écarts de formatage. Cet outil analyse et formate automatiquement les JSON des deux côtés avant comparaison pour éliminer les perturbations des espaces blancs, vous permettant de ne voir que les changements de données réellement significatifs.
Notez que l'ordre des clés dans les objets JSON n'a pas d'importance sémantique ({"a":1,"b":2} est équivalent à {"b":2,"a":1}), mais l'ordre des éléments dans les tableaux est significatif ([1,2] est différent de [2,1]). Ainsi, si vous ne vous souciez que de la concordance du contenu du tableau sans vous soucier de l'ordre, nous recommandons de trier les tableaux ou les clés avant comparaison pour éviter que les changements d'ordre soient incorrectement identifiés comme différences.
Tous les formatages et comparaisons de cet outil s'effectuent localement dans le navigateur, les données ne sont pas téléchargées sur un serveur ; il prend également en charge le surlignage au niveau caractère, le comptage des ajouts/suppressions/modifications, la comparaison simultanée dans plusieurs onglets et le partage de scènes de comparaison via URL. Adapté aux scénarios tels que l'intégration API, la comparaison de configuration, les assertions de test et les revues de code.