Tous les articles

JSON Diff : en quoi la comparaison structurelle diffère de la comparaison textuelle

Comparer deux documents JSON avec un diff textuel classique (comme pour du code) donne souvent un résultat trompeur : les mêmes données peuvent être écrites avec un ordre de clés différent, une indentation différente ou un nombre d'espaces différent — et le diff textuel affichera une « différence » là où les données sont en réalité identiques.

Comparaison structurelle

Un JSON Diff structurel analyse les deux documents en un arbre de valeurs et compare les données elles-mêmes : est-ce qu'un champ existe, quelle valeur il contient, si le type correspond. L'ordre des clés d'un objet, les espaces superflus ou le style d'indentation ne sont pas pris en compte — ils ne font pas partie des données elles-mêmes.

Ce que montre le diff

Un résultat typique de comparaison structurelle met en évidence trois types de changements : les champs ajoutés dans le second document, les champs supprimés du premier, et les champs présents dans les deux mais avec des valeurs différentes. Pour les tableaux, la comparaison est plus délicate — il faut décider de comparer les éléments par position ou d'essayer d'apparier des objets similaires.

À quoi ça sert

  • Comparer une réponse d'API avant et après un changement côté backend pour voir les vraies différences dans les données.
  • Vérifier qu'une modification d'un fichier de configuration n'a rien touché d'autre que prévu.
  • Repérer une régression dans des tests où le JSON attendu et le JSON réel diffèrent.

fr-FR contre fr-CA : quand le diff sert à traquer la terminologie

Les fichiers de traduction destinés au Québec et à la France partagent souvent la même structure de clés mais divergent volontairement sur certains termes — l'Office québécois de la langue française impose par exemple « courriel » là où la France dit « e-mail », ou « fin de semaine » là où on dit « week-end ». Un diff structurel entre fr-FR.json et fr-CA.json sert alors à vérifier que les deux variantes couvrent bien les mêmes clés, pas à repérer une « erreur » dans les valeurs qui diffèrent légitimement d'une variante régionale à l'autre.

Comparaison de tableaux : par position ou par clé

L'approche la plus simple consiste à comparer les éléments d'un tableau index par index, mais si un nouvel élément est inséré au milieu du tableau, toutes les positions suivantes « décalent » et le diff affichera un changement à chaque élément après le point d'insertion, alors qu'en réalité un seul élément a changé. Les outils plus avancés essaient d'apparier les éléments par un champ unique (par exemple id) pour montrer précisément l'insertion ou la suppression, plutôt qu'une cascade de faux changements.

Essayer l'outil