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- 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.