← Retour à l'outil JSON

Comparer du JSON

Dernière mise à jour : 2 octobre 2026

Comparez deux documents JSON et ne voyez que ce qui diffère réellement. La comparaison étant structurelle, réordonner les clés ou reformater ne compte pas ; le rapport liste chaque changement réel avec son chemin, dans votre navigateur.

Structurel, pas textuel Ordre des clés ignoré Dans votre navigateur Aucun envoi Open source (MIT)

Ce que voit une comparaison structurelle

Les deux documents sont d'abord analysés, puis parcourus ensemble. Seules les différences dans les données elles-mêmes sont signalées : une clé présente d'un côté et absente de l'autre, une valeur qui a changé, ou une valeur dont le type a changé — un nombre devenu chaîne, un objet devenu tableau. Les espaces et l'ordre des clés ne participent pas du tout à la comparaison, car après l'analyse ils n'existent plus.

Un changement de type est signalé une fois, au chemin où il se produit, au lieu d'être éclaté en une suppression et un ajout pour chaque feuille en dessous. Cela garde le rapport lisible quand un sous-arbre entier change de forme.

Pourquoi ce n'est pas un diff de lignes

Un diff de texte — ce que montre git diff — compare des lignes. Pour du JSON, c'est souvent trompeur. Réindenter un fichier, ou émettre les mêmes clés dans un autre ordre, est normal quand le JSON est produit par des outils ou des versions de bibliothèque différents, et un diff de lignes en fait un mur de changements alors que les données sont identiques.

Les deux documents ci-dessous sont le même document. Un diff de lignes signale quatre lignes modifiées ; cet outil ne signale rien :

{"a": 1, "b": 2}

{
  "b": 2,
  "a": 1
}

L'inverse est vrai aussi, et c'est la partie utile : un seul caractère changé dans un nom de clé, ou un nombre passé de 3 à 4, apparaît comme exactement un changement au lieu d'être enfoui dans le bruit du reformatage.

Comment lire la notation des chemins

Chaque changement est signalé avec un chemin. $ est la racine du document ; un point entre dans une clé d'objet et un crochet indexe un tableau. Ainsi, $.settings.indent est la clé indent dans settings, $.features[2] est le troisième élément du tableau features, et $["weird key"] désigne une clé qui n'est pas un simple identifiant. La notation suit le style de JSON Pointer, donc un chemin du rapport peut être collé dans d'autres outils JSON.

Ce que la comparaison ne peut pas dire

Questions fréquentes

L'ordre des clés compte-t-il ?

Non. Les deux documents sont analysés avant d'être comparés, et les clés des objets sont appariées par nom, non par position. Reformater un document ou émettre ses clés dans un autre ordre produit donc une différence vide, comme il se doit, car les données sont les mêmes.

Pourquoi l'insertion d'un élément dans un tableau affiche-t-elle autant de changements ?

Les tableaux sont appariés par position, comme dans presque toute comparaison structurelle. Insérer un élément au début d'un long tableau décale chaque élément suivant d'un index, donc chacun est signalé comme modifié alors que les valeurs ont seulement glissé. Sans clé pour apparier, rien ne peut savoir ce qui a été inséré plutôt que modifié. Si vos éléments portent un id stable, triez les deux côtés par cet id avant de comparer.

Que se passe-t-il si un côté n'est pas du JSON valide ?

La comparaison s'arrête et le message de l'analyseur lui-même est affiché pour le document qui a échoué, en précisant s'il s'agit du gauche ou du droit. Rien n'est comparé, car deux documents ne peuvent pas être parcourus ensemble tant que les deux ne sont pas analysés.

Mon JSON est-il envoyé quelque part ?

Non. Les deux documents sont analysés avec JSON.parse dans votre navigateur et comparés en mémoire. Aucune requête ne les transporte, et il n'y a ni compte ni stockage côté serveur. Vous pouvez charger la page puis couper le réseau : la comparaison continue de fonctionner.

Peut-il dire qu'une valeur a été déplacée plutôt que modifiée ?

Non. Cet outil signale des différences, il ne produit pas de correctif. Il n'émet pas de document JSON Patch et ne détecte pas les valeurs déplacées d'un endroit à un autre ; vous verrez une suppression sur l'ancien chemin et un ajout sur le nouveau.

Puis-je comparer du JSON avec des commentaires ou des virgules finales ?

Non. La comparaison utilise le même analyseur strict que le reste du site, donc JSON5, les commentaires et les virgules finales sont refusés. Si un document ne s'analyse pas, passez-le d'abord par le formateur ou le validateur pour voir où il échoue.

Besoin de transformer du JSON en tableau ? JSON vers CSV s'en charge. Une erreur ? Écrivez-nous.