JSON-Diff
Zwei JSON-Dokumente Schlüssel für Schlüssel vergleichen
Warum Text-Diffs bei JSON lügen
Ein Zeilen-Diff meldet umformatiertes JSON als komplett geändert, obwohl kein Wert anders ist; ein gekipptes Boolean versinkt derweil in der Rot-Grün-Wand. Ein strukturelles Diff parst beide Seiten erst, vergleicht dann Wert für Wert — Formatierungsrauschen verschwindet, drei echte Änderungen bleiben.
Was dieses Tool kann
- 🆚 Vergleicht Objekte per Schlüssel, Arrays per Index, rekursiv
- 🏷️ Jede Zeile mit Typ und vollem JSON-Pfad
- 📊 Zählt oben zusammen (+2 / −1 / ~3)
- ⚡ Vergleicht live beim Tippen, mit Compare-Knopf für Absicht
Wann du es brauchst
- Prüfen, was ein API-Release wirklich an Feldern änderte
- Config-Drift zwischen Staging und Produktion finden
- Verifizieren, dass eine Migration Daten korrekt transformierte
Datenschutz: Beide Dokumente parsen und vergleichen lokal — eingefügtes JSON verlässt deinen Browser nie.
Zuletzt aktualisiert · 2026-09-01
So funktioniert der Diff
Beide Inputs parsen zu Werten, dann erzeugt ein rekursiver Walk Zeilen: Fehlende Keys werden hinzugefügt/entfernt, vorhandene-ungleiche Werte (per kanonischem JSON-Text verglichen) geändert, Arrays richten sich per Index aus. Invalides JSON meldet klaren Fehler statt Fake-Leerdiff.
Warum hier diffen?
Strukturbewusst, nicht zeilenbewusst
Objekte per Schlüssel, Arrays per Index, unbegrenzt rekursiv — umsortierte, aber wertgleiche Dateien melden korrekt null Unterschiede.
Pfade zum Greppen
Jede Änderung trägt ihre volle $.path.to.value-Adresse — direkt in Code, Tickets und jq-Queries einsetzbar.
Live mit Absicht
Ergebnisse frischen beim Tippen für Exploration, mit explizitem Compare-Knopf und klaren Invalid-JSON-Fehlern statt stillem Leerzustand.
Häufige Fragen
Wie werden Arrays verglichen?⌄
Per Index: Element 3 gegen Element 3. Umsortierte Arrays melden also Änderung — ehrlich so, denn ein strukturelles Diff kann Sortieren nicht erkennen.
Wie tief geht es?⌄
Rekursiv bis ganz unten, mit vollem $.store.book[0].title-Pfad auf jeder Ebene — kein Tiefenlimit zum Anstoßen.
Zählen Formatunterschiede?⌄
Nein, per Design: Beide Seiten parsen erst, Whitespace und Key-Reihenfolge erzeugen nie Phantom-Diffs. Nur echte Wertänderungen werden gemeldet.
Häufige Fragen
Wie werden Arrays verglichen?
Per Index: Element 3 gegen Element 3. Umsortierte Arrays melden also Änderung — ehrlich so, denn ein strukturelles Diff kann Sortieren nicht erkennen.
Wie tief geht es?
Rekursiv bis ganz unten, mit vollem $.store.book[0].title-Pfad auf jeder Ebene — kein Tiefenlimit zum Anstoßen.
Zählen Formatunterschiede?
Nein, per Design: Beide Seiten parsen erst, Whitespace und Key-Reihenfolge erzeugen nie Phantom-Diffs. Nur echte Wertänderungen werden gemeldet.