JSON-Diff-Vergleich

Vergleichen Sie zwei JSON-Dokumente und sehen Sie sofort, welche Schlüssel hinzugefügt, entfernt oder geändert wurden, aufgelistet nach Schlüsselpfad. Objekte und Arrays werden rekursiv durchlaufen, und selbst Typabweichungen werden als Änderung angezeigt. Alles läuft im Browser ab, nichts wird an einen Server gesendet.

Tipps

  • Schlüsselpfade werden in Punkt-/Klammernotation wie `user.address[0].city` angezeigt, sodass Sie sofort erkennen, welcher verschachtelte Wert sich geändert hat – egal wie tief die JSON-Struktur verschachtelt ist.
  • Arrays werden verglichen, indem Elemente am gleichen Index einander zugeordnet werden. Beachten Sie, dass bereits eine reine Umsortierung der Array-Elemente dazu führt, dass alle Elemente als geändert erkannt werden.
  • Enthält derselbe Schlüssel in einem Dokument eine Zeichenkette und im anderen ein Objekt, wird diese Typabweichung ebenfalls als Änderung gemeldet, wobei beide Rohwerte nebeneinander angezeigt werden.
  • Beim Vergleich von API-Antworten vor und nach einem Deployment sollten Felder, die sich ohnehin jedes Mal ändern (z. B. Zeitstempel oder Request-IDs), vorab entfernt werden, damit Sie sich nur auf die wirklich relevanten Unterschiede konzentrieren.
  • Selbst bei JSON mit sehr vielen unveränderten Werten wird nur die Anzahl der übereinstimmenden Blattwerte angezeigt, damit das Ergebnis übersichtlich bleibt statt unübersichtlich zu werden.

Häufig gestellte Fragen

Er wird häufig genutzt, um eine API-Antwort vor und nach einem Deployment zu vergleichen und unbeabsichtigte Änderungen zu erkennen, oder um Unterschiede zwischen Konfigurationsdateien (z. B. config.json) in verschiedenen Umgebungen aufzudecken. Nur die Unterschiede zu extrahieren ist deutlich schneller, als zwei JSON-Blöcke von Hand zu vergleichen.

Nein. Objektschlüssel werden anhand ihres Namens einander zugeordnet, daher spielt es keine Rolle, ob A und B ihre Schlüssel in unterschiedlicher Reihenfolge auflisten. Es wird nur geprüft, ob jeder Schlüssel existiert und ob sein Wert übereinstimmt – die visuelle Reihenfolge im Quelltext bleibt unberücksichtigt.

Arrays werden anhand des Index (0., 1. Element usw.) einander zugeordnet. Auch wenn der eigentliche Inhalt gleich bleibt, wird eine geänderte Reihenfolge daher als Änderung an diesem Index erkannt. Ein reihenfolgenunabhängiger Array-Vergleich wird von diesem Tool nicht unterstützt.

Nein. Die gesamte Vergleichslogik läuft ausschließlich im JavaScript Ihres Browsers ab, und die eingegebenen Inhalte werden niemals an einen Server übertragen. So können Sie auch Antworten mit API-Schlüsseln oder personenbezogenen Daten bedenkenlos vergleichen.

Schlägt JSON.parse fehl, wird in einer Fehlermeldung klar angegeben, ob A oder B das ungültige Format enthält, und es wird kein Diff berechnet. Das gibt Ihnen einen Ansatzpunkt, um typische Fehler wie ein fehlendes Komma oder ein nicht geschlossenes Anführungszeichen zu finden.
ツールくん

Übrigens – Wie sich der Schlüsselabgleich bei CSV-Diff und JSON-Diff unterscheidet

Unser CSV-Diff-Vergleich (dev.csv.csv_diff) vergleicht Zeilen und Zellen anhand einer einzigen festgelegten Schlüsselspalte, um jede Zeile zu identifizieren. JSON besitzt keine flache Zeilen-Spalten-Struktur – es erlaubt verschachtelte Objekte und Arrays –, sodass sich der zugrunde liegende Abgleichsalgorithmus trotz gleicher Bezeichnung „Diff-Vergleich" deutlich unterscheidet. Statt einer Schlüsselspalte verwendet dieses Tool einen rekursiv von der Wurzel bis zu jedem Blatt aufgebauten „Schlüsselpfad" als Vergleichseinheit.

Arrays sind beim JSON-Diff der heikelste Teil. Eine CSV-Zeile lässt sich eindeutig über ihren Schlüsselspaltenwert identifizieren, JSON-Array-Elemente besitzen jedoch keinen garantierten Bezeichner. Dieses Tool ordnet Elemente einfach nach Index (Reihenfolge des Auftretens) zu – ein Design, das eher zum Verfolgen von Änderungen an Objektstrukturen oder primitiven Werten (etwa in Konfigurationsdateien oder API-Antworten) geeignet ist als zum Verfolgen von Hinzufügungen und Entfernungen innerhalb eines Arrays.

In der Praxis findet sich ein ähnlicher Gedanke in Continuous-Integration-Pipelines, die automatisch prüfen, ob sich der Antwortvertrag einer REST-API geändert hat. Dieses Tool legt Wert auf die Bequemlichkeit, vollständig im Browser zu laufen, doch das zugrunde liegende Konzept überschneidet sich mit Snapshot-Tests und Contract-Testing: JSON-Strukturunterschiede maschinell zu erkennen, ist eine wiederkehrende Aufgabe in vielen Phasen der Softwareentwicklung.

→ Alle Wissenstexte ansehen