Diff JSON

Collez deux documents JSON — les chemins modifiés apparaissent instantanément, sans bouton, sans envoi.

Mode d’emploi

  1. Collez l’ancien JSON dans « JSON d’origine » et le nouveau dans « JSON modifié » — chaque chemin ajouté, supprimé ou modifié apparaît au fil de la frappe, aucun bouton à cliquer.
  2. L’ordre des clés, 1 vs 1.0, 1e0 vs 1 et \u00e9 vs é ne sont pas des différences : la comparaison est structurelle. Si vous devez examiner des changements de mise en forme ou d’ordre des clés, utilisez plutôt l’outil de diff de texte.
  3. Utilisez « Copier le diff » pour récupérer la liste complète : chaque ligne commence par +, - ou ~, suivie du chemin et de la valeur complète, prête pour un ticket ou un e-mail.

Exemple

Deux documents

【Original】
{"commande":"A-2026-001","client":{"nom":"Ada","ville":"Londres"},"total":1299.5,"paye":false}

【Modifié】
{"commande":"A-2026-001","client":{"nom":"Ada","ville":"Paris"},"total":1399.0,"paye":true,"code":"BIENVENUE10"}

Différences

+ $.code "BIENVENUE10"
~ $.client.ville "Londres" → "Paris"
~ $.total 1299.5 → 1399.0
~ $.paye false → true
(+1 ~3 −0)

Les lignes 【Original】/【Modifié】 sont des titres d’exemple ; en usage réel, les deux documents vont dans les deux zones de saisie. Seuls les vrais changements de valeur sont listés : le numéro de commande et le nom du client, inchangés, n’apparaissent pas, et l’ordre des clés n’est jamais une différence.

Règles, limites et problèmes connus

  • Il s’agit d’un diff structurel, pas d’un diff de texte : l’ordre des clés d’objet est ignoré ; 1, 1.0 et 1e0 sont le même nombre ; "\u00e9" et "é" sont la même chaîne. Utilisez l’outil de diff de texte si les changements de mise en forme vous importent.
  • Les nombres sont comparés comme des décimaux exacts, jamais via le Number de JavaScript : 9007199254740993 reste exact et 1e400 ne devient pas Infinity. La liste affiche toujours le nombre exactement tel que vous l’avez saisi.
  • Les chaînes sont comparées par leur valeur décodée et affichées sous forme JSON standard ; les clés en double conservent la dernière valeur, comme JSON.parse, et un avertissement indique combien de doublons ont été trouvés.
  • Les tableaux sont ordonnés : les insertions et suppressions sont alignées, si bien qu’ajouter un élément en tête donne une seule ligne « + », et non une modification de tous les éléments suivants. Les déplacements sont signalés comme une suppression plus un ajout, et il n’existe pas d’option « ignorer l’ordre des tableaux ».
  • Ajouter ou supprimer une sous-arborescence entière correspond à un seul chemin. Les valeurs très longues s’affichent à l’écran sous la forme « objet · N clés » ou « tableau · N éléments », tandis que « Copier le diff » contient toujours la valeur complète.
  • « Copier le diff » produit une liste de modifications en texte brut (+ / - / ~, chemin, valeur complète), et non un JSON Patch. Les insertions et suppressions dans les tableaux décalent les index suivants : un JSON Patch naïf ne s’appliquerait donc pas.
  • Les chemins utilisent la forme $.a.b[0]. Les éléments supprimés renvoient à leur ancien index ; les éléments ajoutés et modifiés renvoient au nouveau document.
  • Limites : au-delà de 200 000 caractères au total, les résultats s’actualisent environ 0,6 s après l’arrêt de la frappe ; un document de plus de 1 000 000 de caractères ou une imbrication de plus de 256 niveaux est signalé comme une erreur, jamais tronqué. Les tableaux dépassant la limite d’alignement sont comparés par index, avec une note explicative ; au plus 400 lignes de modification sont affichées, mais la copie donne toujours la liste complète.
  • Aucun envoi de fichier, aucun chargement d’URL, aucune requête JSON Schema ou JSONPath, aucun historique et aucun lien de partage. Tout s’exécute dans votre navigateur : rien n’est envoyé ni stocké.
  • Sur les pages en chinois, japonais et coréen, « Ponctuation pleine chasse » est activé par défaut : la ponctuation hors des chaînes est ramenée à l’ASCII, tandis que le contenu des chaînes reste exactement tel que saisi.

Ce dont on a généralement besoin ensuite, une fois les deux documents comparés.