Deux réponses d’API, un champ qui a bougé quelque part. Pour comparer du JSON sans passer vingt minutes à faire défiler deux fichiers, collez-les ici : l’outil lit les deux textes, compare les données (pas la mise en forme) et ne liste que les écarts. Chaque ligne donne le chemin, le type de changement, l’ancienne et la nouvelle valeur.
Comparer du JSON : chemins, types de changement et valeurs
Le chemin suit la RFC 6901 (JSON Pointer) : /clients/0/nom désigne la clé nom du premier élément de clients. Une barre oblique dans une clé s’écrit ~1, un tilde s’écrit ~0. Il existe quatre types de changement : ajouté, supprimé, modifié et type modifié. Chacun a sa couleur, un symbole (+, -, ~, !) et une étiquette de texte ; la couleur seule ne porte donc pas l’information.
Une ligne de synthèse compte chaque type. Si les deux côtés sont identiques, le message « Aucune différence » apparaît. Au-delà de 200 caractères, une valeur est tronquée, et le bouton « Afficher la valeur complète » la déplie.
Mode d’emploi, de la saisie au patch RFC 6902
- Collez l’original dans la zone de gauche et la version modifiée dans celle de droite. Un exemple est déjà présent à l’ouverture.
- Patientez un instant : la comparaison démarre 200 ms après la dernière frappe. Si un côté n’est pas du JSON valide, le message indique le côté, la ligne et la colonne.
- Cliquez sur Formater les deux pour indenter le JSON valide, ou sur Inverser les côtés si vous les avez collés à l’envers.
- Activez Ignorer l’ordre des tableaux si l’ordre des éléments n’a pas d’importance pour vous.
- Utilisez Copier le diff en texte pour une ligne par différence, ou Copier en JSON Patch pour un patch qu’un programme peut appliquer.
Le patch (RFC 6902) contient des opérations add, remove et replace et transforme le côté gauche en côté droit. Les éléments d’un tableau sont supprimés de l’indice le plus haut au plus bas, puis ajoutés du plus bas au plus haut. L’outil ne produit ni move ni copy.
Ordre des clés, ordre des tableaux, nombres et null
Les objets se comparent clé par clé : {"a":1,"b":2} égale {"b":2,"a":1}. Les tableaux se comparent par indice : [1,2,3] contre [3,2,1] donne deux changements, car l’élément du milieu est identique.
Avec l’option d’ignorer l’ordre, l’outil construit pour chaque élément un texte canonique aux clés triées et apparie les éléments égaux comme un multiensemble. Les tableaux imbriqués sont alors comparés sans ordre eux aussi. En contrepartie, un élément modifié à l’intérieur apparaît comme un élément supprimé et un élément ajouté, et le bouton JSON Patch est désactivé, puisqu’un patch désigne les éléments par position.
Les nombres se comparent par valeur : 1 et 1.0 sont égaux. null n’est pas une clé absente. Un objet vide face à un tableau vide est un changement de type, tout comme 1 face à "1". Les chaînes doivent être identiques, majuscules et espaces compris.
Taille maximale, grands entiers et données qui restent locales
L’analyse et la comparaison s’exécutent dans votre navigateur avec JSON.parse. L’outil n’envoie aucune requête et ne conserve rien ; l’onglet réseau de votre navigateur le montre. Le presse-papiers n’est utilisé que lorsque vous cliquez sur un bouton de copie.
Chaque côté accepte 2 000 000 de caractères, au-delà l’entrée est refusée avec un message. Les entiers supérieurs à 2^53 perdent en précision : 9007199254740993 est lu comme 9007199254740992, donc deux grands nombres différents peuvent paraître égaux. Si une clé apparaît deux fois, la dernière valeur l’emporte. Les commentaires et les virgules finales ne sont pas du JSON ; l’erreur donne la ligne et la colonne. La liste affiche les 1 000 premières différences, les boutons de copie les utilisent toutes. Un BOM en début de texte est retiré avant l’analyse.