Ce que fait cet outil
Il normalise les deux côtés — indentation à deux espaces, clés triées — puis les compare ligne à ligne et affiche le résultat en diff unifié :
@@ -2,4 +2,4 @@
"host": "localhost",
- "port": 8080,
+ "port": 3000,
"tls": true
- est l’original, + le modifié, et la ligne @@ donne la région. C’est le format que parlent git diff et patch.
Ce qui compte comme différence
| différence ? | |
|---|---|
| Indentation, sauts de ligne | non |
| Ordre des clés d’un objet | non, par défaut |
| Ordre des éléments d’un tableau | oui |
| Une valeur qui a changé | oui |
Objets et tableaux sont traités différemment parce que JSON les traite différemment : un objet est un ensemble non ordonné de paires, un tableau est une suite. Réordonner les clés d’un objet donne la même valeur ; réordonner les éléments d’un tableau en donne une autre.
Au dernier chiffre près
{ "id": 12345678901234567890 }
{ "id": 12345678901234567891 }
Ces deux documents diffèrent, et cet outil le dit.
Cela mérite d’être écrit parce que ce ne fut pas toujours le cas. Normaliser les deux côtés par une analyse JSON ordinaire faisait passer chaque nombre par un flottant double précision, et les deux identifiants — vingt chiffres, ne différant que par le dernier — se confondaient en une seule valeur. Le diff revenait vide, ce qui se lit aucune différence.
Un diff vide est une affirmation, pas un haussement d’épaules. Un outil de comparaison est précisément celui à qui l’on demande de voir ce que l’œil ne voit pas : les deux côtés sont désormais lus sans perte et comparés tels qu’écrits.
Les clés en double sont signalées
Si l’un des deux documents répète une clé, la comparaison s’arrête et le dit, exactement comme le fait le formateur JSON. Ne garder que la dernière occurrence de chacune — ce que la plupart des analyseurs font sans bruit — laisserait une vraie différence entre les deux fichiers s’évanouir avant même le début de la comparaison.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.