JSON Diff : comparer des objets JSON

Collez deux documents JSON pour voir exactement ce qui a changé. Chaque différence est listée par chemin, comme $.users[2].email, et ni la mise en forme ni l’ordre des clés ne déclenchent de fausses alertes.

Fonctionne dans le navigateurSans inscriptionAucun envoi de données

L’ordre des clés est toujours ignoré.

Comment utiliser : JSON Diff

  1. Collez le JSON d’origine à gauche et le JSON modifié à droite, ou ouvrez deux fichiers.
  2. Les erreurs de syntaxe s’affichent sous chaque zone avec la ligne et la colonne, pour les corriger rapidement.
  3. Lisez le tableau Chemins modifiés : chaque ligne indique si une valeur a été ajoutée, supprimée ou modifiée, avec l’ancienne et la nouvelle valeur.
  4. Cochez Ignorer l’ordre des tableaux lorsque les listes sont des ensembles, par exemple des tags ou des permissions.
  5. Faites défiler jusqu’à la vue côte à côte pour voir les changements en contexte, ou copiez la liste des changements en JSON.

Pourquoi un diff JSON structurel vaut mieux qu’un diff texte

Un diff texte classique compare des caractères et des lignes : deux fichiers JSON contenant les mêmes données peuvent sembler totalement différents si l’un est minifié, indenté autrement ou a ses clés dans un autre ordre. Cet outil analyse d’abord les deux documents et compare les données : les objets sont comparés clé par clé quel que soit l’ordre, et les nombres, chaînes, booléens et null sont comparés par valeur. Seuls les vrais changements sont signalés.

Comment les changements sont présentés

Chaque différence reçoit un emplacement de style JSONPath, comme $.owner.email ou $.items[3].price, et l’un des trois types suivants :

  • ajouté : la clé ou l’élément de tableau n’existe que dans le JSON modifié.
  • supprimé : il n’existe que dans le JSON d’origine.
  • modifié : il existe des deux côtés mais la valeur diffère, y compris en cas de changement de type, par exemple une chaîne devenue nombre.

Les tableaux sont alignés avec un algorithme de plus longue sous-séquence commune : insérer un élément au début d’une liste est signalé comme un seul ajout, au lieu de marquer tous les éléments suivants comme modifiés.

Ignorer l’ordre des tableaux

De nombreuses API renvoient des listes dont l’ordre n’a pas de sens, comme des rôles, des tags ou des ID. Avec Ignorer l’ordre des tableaux, les tableaux sont comparés comme des collections : un élément n’est compté comme ajouté ou supprimé que s’il n’a pas d’équivalent de l’autre côté. La vue côte à côte trie alors les éléments des tableaux pour que les listes égales s’alignent.

Usages typiques

Comparer des réponses d’API entre staging et production, vérifier ce qu’une migration a changé dans un fichier de configuration, examiner les différences entre deux fichiers package.json ou tsconfig, et déboguer des tests de snapshot.

Questions fréquentes

L’ordre des clés compte-t-il dans la comparaison JSON ?
Non. Les objets JSON ne sont pas ordonnés, donc {"a":1,"b":2} et {"b":2,"a":1} sont considérés comme égaux. L’ordre des tableaux compte par défaut, car les tableaux sont ordonnés, mais vous pouvez le désactiver avec Ignorer l’ordre des tableaux.
Mon JSON est-il envoyé sur un serveur ?
Non. Les deux documents sont analysés et comparés dans votre navigateur. Rien ne transite par le réseau : l’outil est donc sûr pour des réponses d’API contenant des tokens ou des données clients.
Que signifient les chemins comme $.users[2].email ?
$ est la racine du document, .users est une clé et [2] est le troisième élément d’un tableau (les indices commencent à 0). Les clés avec des espaces ou des caractères spéciaux sont écrites entre crochets, comme $["first name"].
1 est-il égal à 1.0 ?
Oui. Les deux s’analysent comme le même nombre, ils ne sont donc pas signalés comme différents. Un nombre et une chaîne, comme 1 et "1", sont différents et signalés comme modifiés.
Puis-je comparer du JSON avec des commentaires ou des virgules finales ?
Le JSON standard ne les autorise pas : une telle entrée est signalée avec la ligne et la colonne exactes. Supprimez les commentaires ou les virgules, ou nettoyez d’abord le document dans le formateur JSON.

Outils associés