Comparateur de différences JSON
Comparez deux documents JSON et voyez instantanément quelles clés ont été ajoutées, supprimées ou modifiées, listées par chemin de clé. Les objets et tableaux sont parcourus récursivement, et même les incohérences de type sont signalées comme des changements. Tout se traite dans votre navigateur, sans envoi vers un serveur.
Astuces
- Les chemins de clé s'affichent en notation point/crochet, comme `user.address[0].city`, ce qui permet de repérer immédiatement quelle valeur imbriquée a changé, quelle que soit la profondeur de la structure JSON.
- Les tableaux sont comparés en associant les éléments au même index. Notez qu'un simple réordonnancement des éléments d'un tableau sera détecté comme un changement pour tous les éléments.
- Si une même clé contient une chaîne dans un document et un objet dans l'autre, cette incohérence de type est également signalée comme un changement, avec les deux valeurs brutes affichées côte à côte.
- Lorsque vous comparez des réponses d'API avant et après un déploiement, retirez d'abord les champs qui changent systématiquement, comme les horodatages ou les identifiants de requête, afin de vous concentrer uniquement sur les différences qui comptent vraiment.
- Même pour un JSON contenant énormément de valeurs inchangées, seul le nombre de valeurs feuilles identiques est affiché, ce qui garde le résultat lisible plutôt que surchargé.
Questions fréquentes
Anecdote — En quoi l'appariement des clés diffère entre le diff CSV et le diff JSON
Notre comparateur de différences CSV (dev.csv.csv_diff) compare lignes et cellules en s'appuyant sur une seule colonne clé désignée pour identifier chaque ligne. Le JSON ne possède pas de structure plate en lignes et colonnes — il autorise l'imbrication d'objets et de tableaux — donc, bien que les deux outils portent le nom de « comparateur de différences », l'algorithme d'appariement sous-jacent est assez différent. Au lieu d'une colonne clé, cet outil utilise un « chemin de clé » construit récursivement depuis la racine jusqu'à chaque feuille comme unité de comparaison.
Les tableaux constituent la partie la plus délicate lors de la comparaison de JSON. Une ligne CSV peut être identifiée de façon unique par la valeur de sa colonne clé, mais les éléments d'un tableau JSON ne possèdent aucun identifiant garanti. Cet outil associe simplement les éléments par index (ordre d'apparition), une conception mieux adaptée pour suivre les changements de structure d'un objet ou de valeurs primitives — comme dans des fichiers de configuration ou des réponses d'API — que pour suivre les ajouts et suppressions au sein du contenu d'un tableau.
En pratique, une idée similaire apparaît dans les pipelines d'intégration continue qui vérifient automatiquement si le contrat de réponse d'une API REST a changé. Cet outil privilégie la commodité de fonctionner entièrement dans le navigateur, mais le concept sous-jacent rejoint les tests de snapshot et les tests de contrat (contract testing) : détecter mécaniquement les différences de structure JSON est un défi récurrent à de nombreuses étapes du développement logiciel.