JSON-Diff — JSON-Objekte vergleichen

Zwei JSON-Objekte oder -Arrays nach Pfad vergleichen. Hebt hinzugefügte, entfernte und geänderte Werte mit strikter Typprüfung hervor. Kein zeilenbasierter Text-Diff.

Funktionsweise
  • + hinzugefügter Pfad · − entfernter Pfad · ~ geänderter Wert. Objektpfade verwenden Punkte (user.name), Arrays verwenden Indizes (items[0]). Der Vergleich ist strikt (1 ≠ "1").

+ hinzugefügter Pfad · − entfernter Pfad · ~ geänderter Wert. Objektpfade verwenden Punkte (user.name), Arrays verwenden Indizes (items[0]). Der Vergleich ist strikt (1 ≠ "1").

Über JSON-Diff

Was ist ein JSON-Diff?

Ein JSON-Diff vergleicht zwei JSON-Werte und listet strukturelle Änderungen nach Pfad auf. Diese Seite zeigt hinzugefügte Pfade (+), entfernte Pfade (−) und geänderte Werte (~).

Die Verarbeitung erfolgt im Browser. Objektpfade verwenden Punkte (user.name), Arrays verwenden Indizes (items[0]). Der Vergleich ist strikt: 1 ist nicht "1". Dies ist weder ein zeilenbasierter Text-Diff noch eine sprachspezifische CLI.

JSON im Code vergleichen

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

JSON-Diff: FAQ

Was ist ein JSON-Diff?
Ein JSON-Diff vergleicht zwei JSON-Werte und listet strukturelle Änderungen nach Pfad auf. Diese Seite verwendet + für hinzugefügte Pfade, − für entfernte Pfade und ~ für geänderte Werte.
Wie werden JSON-Pfade geschrieben?
Objektschlüssel werden mit Punkten getrennt, etwa user.name. Array-Indizes stehen in Klammern, etwa items[0]. Der Wurzelpfad wird als (root) angezeigt, wenn sich der Wert auf oberster Ebene selbst ändert.
Ist der JSON-Vergleich typstreng?
Ja. Werte müssen in Typ und Inhalt übereinstimmen. Die Zahl 1 unterscheidet sich vom String "1". Die Reihenfolge der Objektschlüssel spielt keine Rolle.
Wie lässt sich JSON im Code vergleichen?
Beide Seiten mit JSON.parse in JavaScript oder json.loads in Python parsen. Anschließend Objekte und Arrays durchlaufen, um hinzugefügte, entfernte und geänderte Pfade zu erfassen. Diese Seite ist ein Browser-Tool, kein CLI-Paket.