Diff JSON — Comparer les objets JSON

Comparer deux objets ou tableaux JSON par chemin. Met en évidence les valeurs ajoutées, supprimées et modifiées avec vérification stricte des types. Pas un diff texte orienté lignes.

Fonctionnement
  • + chemin ajouté · − chemin supprimé · ~ valeur modifiée. Les chemins d'objets utilisent des points (user.name) ; les tableaux utilisent des index (items[0]). Comparaison stricte (1 ≠ "1").

+ chemin ajouté · − chemin supprimé · ~ valeur modifiée. Les chemins d'objets utilisent des points (user.name) ; les tableaux utilisent des index (items[0]). Comparaison stricte (1 ≠ "1").

À propos du diff JSON

Qu'est-ce qu'un diff JSON ?

Un diff JSON compare deux valeurs JSON et liste les changements structurels par chemin. Cette page signale les chemins ajoutés (+), les chemins supprimés (−) et les valeurs modifiées (~).

Le traitement a lieu dans votre navigateur. Les chemins d'objets utilisent des points (user.name) ; les tableaux utilisent des index (items[0]). La comparaison est stricte : 1 n'est pas "1". Ce n'est pas un diff texte orienté lignes ni un CLI spécifique à un langage.

Comparer JSON en code

JavaScript
const a = JSON.parse(left);
const b = JSON.parse(right);
function diff(x, y, path = "") {
  if (Object.is(x, y)) return [];
  if (typeof x !== "object" || !x || typeof y !== "object" || !y) return [{ path, from: x, to: y }];
  const keys = Array.from(new Set([...Object.keys(x), ...Object.keys(y)]));
  return keys.flatMap(k => diff(x[k], y[k], path ? `${path}.${k}` : k));
}
const changes = diff(a, b);
Python
import json
a = json.loads(left)
b = json.loads(right)
def diff(x, y, path=""):
    if x == y: return []
    if not isinstance(x, (dict, list)) or not isinstance(y, (dict, list)):
        return [{"path": path, "from": x, "to": y}]
    keys = set(x.keys()) | set(y.keys()) if isinstance(x, dict) else range(max(len(x), len(y)))
    res = []
    for k in keys:
        p = f"{path}.{k}" if path else str(k)
        if k not in x: res.append({"path": p, "added": y[k]})
        elif k not in y: res.append({"path": p, "removed": x[k]})
        else: res.extend(diff(x[k], y[k], p))
    return res
changes = diff(a, b)
Notation
+ user.email = "a@b.c"
- items[1] = 2
~ b 2 -> 3

FAQ du diff JSON

Qu'est-ce qu'un diff JSON ?
Un diff JSON compare deux valeurs JSON et liste les changements structurels par chemin. Cette page utilise + pour les chemins ajoutés, − pour les chemins supprimés et ~ pour les valeurs modifiées.
Comment écrire les chemins JSON ?
Les clés d'objet utilisent des points, comme user.name. Les index de tableau utilisent des crochets, comme items[0]. Le chemin racine est affiché comme (root) quand la valeur de niveau supérieur elle-même change.
La comparaison JSON est-elle stricte sur les types ?
Oui. Les valeurs doivent correspondre en type et en contenu. Le nombre 1 diffère de la chaîne "1", et l'ordre des clés d'objet n'a pas d'importance.
Comment comparer JSON en code ?
Analysez les deux côtés avec JSON.parse en JavaScript ou json.loads en Python, puis parcourez objets et tableaux pour signaler ajouts, suppressions et modifications par chemin. Cette page est un outil navigateur, pas un package CLI.