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
Chemins modifiés
| Changement | Chemin | Ancienne valeur | Nouvelle valeur |
|---|
Comment utiliser : JSON Diff
- Collez le JSON d’origine à gauche et le JSON modifié à droite, ou ouvrez deux fichiers.
- Les erreurs de syntaxe s’affichent sous chaque zone avec la ligne et la colonne, pour les corriger rapidement.
- 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.
- Cochez Ignorer l’ordre des tableaux lorsque les listes sont des ensembles, par exemple des tags ou des permissions.
- 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 ?
{"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 ?
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 ?
1 et "1", sont différents et signalés comme modifiés.