Pourquoi comparer des JSON ?
La comparaison de données JSON est une tâche courante pour les développeurs. Que ce soit pour déboguer une réponse API qui a changé, vérifier les différences entre deux fichiers de configuration, ou auditer les modifications d'un schéma de base de données, un diff JSON visuel est infiniment plus rapide qu'une comparaison manuelle.
Comment fonctionne la comparaison
Notre comparateur analyse la structure arborescente de chaque JSON et compare clé par clé, niveau par niveau. Contrairement à un diff textuel (comme git diff), il comprend la sémantique JSON : l'ordre des clés dans un objet n'affecte pas le résultat, mais l'ordre des éléments dans un tableau est significatif.
Cas d'utilisation
Débogage API
Comparez les réponses de deux endpoints ou de deux versions d'une API pour identifier exactement ce qui a changé dans la structure ou les données retournées.
Configuration
Comparez les fichiers package.json, tsconfig.json ou docker-compose.yml (converti en JSON) entre deux branches ou environnements.
Migrations de données
Vérifiez qu'une migration de données a correctement transformé les documents en comparant un échantillon avant/après.
Tests de régression
Comparez les snapshots de réponses API ou de state Redux pour détecter les régressions dans votre application.
Comparer en ligne de commande
Pour les comparaisons automatisées, vous pouvez utiliser des outils CLI :
- jq :
diff <(jq --sort-keys . a.json) <(jq --sort-keys . b.json)— compare après tri des clés - json-diff (npm) :
npx json-diff a.json b.json— diff sémantique coloré - Python :
deepdifflibrary — comparaison structurelle profonde avec rapport détaillé
Bonnes pratiques avant de comparer
Une comparaison JSON est plus fiable lorsque les deux documents représentent le même niveau de données. Si vous comparez une réponse API de production avec une réponse de staging, supprimez d'abord les champs naturellement variables : timestamps, identifiants générés, traces de debug, numéros de requête et jetons temporaires. Ces valeurs créent du bruit et masquent les vrais changements.
Pour les tableaux, définissez clairement si l'ordre est important. Une liste de transactions, de logs ou d'étapes de workflow doit généralement conserver l'ordre. Une liste de tags, de permissions ou d'options peut être triée avant comparaison pour éviter de signaler une différence qui n'a pas de valeur métier.
Interpréter le résultat
- Ajout : une clé ou une valeur existe uniquement dans le JSON de droite. Cela peut signaler une nouvelle propriété d'API ou un champ généré par une migration.
- Suppression : une clé existe uniquement dans le JSON de gauche. Vérifiez si le champ était obsolète ou s'il a disparu par erreur.
- Modification : la même clé existe des deux côtés, mais sa valeur diffère. C'est le signal le plus important pour les tests de régression.
Dans une revue de code, collez uniquement des échantillons anonymisés. Même si l'outil fonctionne localement, une bonne hygiène de sécurité consiste à retirer les secrets, emails réels, tokens, cookies et données personnelles avant tout partage avec une équipe.