Comparer deux fichiers JSON
méthodes et outils
Comprendre ce qu’on compare vraiment, et choisir l’outil selon ses données.
Pour comparer deux fichiers JSON correctement, il faut comparer leur structure, pas seulement leur texte : un diff ligne à ligne se trompe dès que l’ordre des clés ou l’indentation change. Outils en ligne pour les données anodines, solutions hors ligne pour les données sensibles.
- Texte vs structure : un diff textuel signale de fausses différences de présentation.
- Comparaison structurelle : ignore l’ordre des clés et l’indentation, ne garde que le vrai contenu.
- En ligne : rapide, mais à réserver aux données non sensibles.
- Hors ligne : VS Code, jq ou un diff de version gardent les données sur votre machine.
Pourquoi comparer deux fichiers JSON
Le besoin revient dès qu’on travaille avec des données structurées. On compare deux réponses d’API pour vérifier qu’une mise à jour n’a rien cassé. On confronte deux fichiers de configuration pour repérer ce qui diffère entre un environnement de test et un environnement de production. On contrôle l’évolution d’un même fichier entre deux versions, après une modification manuelle ou automatique.
Dans tous ces cas, l’objectif est le même : isoler ce qui a changé, été ajouté, supprimé ou déplacé. Le piège, c’est de confondre une vraie différence de contenu avec une simple différence de présentation.
Comparaison textuelle ou comparaison structurelle
C’est la distinction la plus importante, et celle que beaucoup découvrent à leurs dépens. Une comparaison textuelle traite le fichier comme une suite de lignes. Elle est rapide et fonctionne bien quand les deux fichiers sont formatés de façon identique. Mais le JSON n’impose ni ordre des clés, ni indentation : deux fichiers équivalents peuvent donc produire un diff rempli de différences qui n’en sont pas.
Une comparaison structurelle, parfois dite sémantique, analyse d’abord le JSON pour le transformer en structure de données, indépendamment de sa mise en forme. Elle compare ensuite les objets et les tableaux clé par clé, valeur par valeur. Pour du JSON, c’est presque toujours la bonne approche.
| Critère | Comparaison textuelle | Comparaison structurelle |
|---|---|---|
| Ordre des clés différent | Signalé comme une différence (faux positif) | Ignoré, aucune différence |
| Indentation / formatage | Peut tout faire diverger | Sans effet sur le résultat |
| Valeur réellement modifiée | Parfois noyée dans le bruit | Isolée clairement |
Comparer en ligne
rapide, mais prudent
Il existe de nombreux comparateurs JSON en ligne. Le principe est toujours le même : on colle les deux fichiers dans deux zones, et l’outil met en évidence les ajouts, suppressions et modifications, souvent avec un code couleur. C’est la solution la plus rapide pour un contrôle ponctuel, sans rien installer.
Ces outils ont un atout : beaucoup effectuent le traitement directement dans le navigateur, sans envoyer les données à un serveur. Mais ce n’est pas systématique.
Ne collez jamais d’identifiants, de clés d’accès, de secrets de configuration ou de données personnelles dans un outil en ligne. Dans le doute sur la confidentialité, basculez sur une solution hors ligne.
Comparer hors ligne pour les données sensibles
Quand les données ne doivent pas quitter votre machine, plusieurs options existent. Un éditeur de code comme VS Code permet de comparer deux fichiers côte à côte, avec les différences surlignées ; certaines extensions ajoutent une comparaison spécifique au JSON qui ignore l’ordre des clés.
En ligne de commande, l’outil jq sert à reformater et trier un JSON de façon canonique. En normalisant les deux fichiers de la même manière avant de les comparer avec un simple diff, on élimine les fausses différences de présentation : une approche fiable et scriptable. Et si vos fichiers sont suivis dans un dépôt de version, la commande de diff intégrée compare deux états d’un même fichier.
Méthode fiable en quelques étapes
Une comparaison propre suit toujours la même logique, quel que soit l’outil retenu.
-
Valider le JSON
Vérifiez que les deux fichiers sont du JSON correct : un fichier invalide fausse tout le reste.
-
Normaliser
Triez les clés et appliquez une indentation identique aux deux fichiers pour neutraliser les différences de présentation.
-
Comparer
Lancez la comparaison, de préférence avec un outil qui comprend la structure plutôt que le seul texte.
-
Interpréter
Distinguez les valeurs modifiées, les clés ajoutées d’un côté et celles présentes seulement de l’autre.
Comment comparer deux JSON sans se tromper à cause du formatage ?
En utilisant une comparaison structurelle plutôt que textuelle, ou en normalisant les deux fichiers (clés triées, indentation identique) avant un diff classique. Cela neutralise les différences d’ordre et de présentation.
Quel outil pour comparer du JSON en ligne ?
Plusieurs comparateurs JSON web existent ; ils fonctionnent en collant les deux fichiers côte à côte avec mise en évidence des différences. Ils conviennent pour des données non sensibles et un contrôle rapide.
Est-ce risqué de coller du JSON sensible dans un outil en ligne ?
Oui, c’est un risque à éviter. Même si beaucoup d’outils traitent les données dans le navigateur, ce n’est pas le cas partout. Pour des identifiants, des clés ou des données personnelles, préférez une solution hors ligne.
Comment comparer du JSON hors ligne ?
Avec un éditeur de code comme VS Code (comparaison côte à côte), ou en ligne de commande avec jq pour normaliser les fichiers puis un diff. Vos données restent alors sur votre machine.
Pourquoi deux fichiers JSON identiques apparaissent-ils différents ?
Parce qu’un diff textuel tient compte de l’ordre des clés et de l’indentation, que le JSON n’impose pas. Une comparaison structurelle ignore ces détails de forme et ne signale que les vraies différences de contenu.
Bien comparer du JSON, c’est moins une question d’outil que de méthode : on compare des structures, pas des lignes de texte.