JSON Diff: JSON-Objekte vergleichen
Füge zwei JSON-Dokumente ein und sieh genau, was sich geändert hat. Jeder Unterschied wird mit seinem Pfad aufgelistet, etwa $.users[2].email, und Formatierung oder Schlüsselreihenfolge lösen nie falschen Alarm aus.
Läuft im BrowserOhne AnmeldungKein Upload
Geänderte Pfade
| Änderung | Pfad | Alter Wert | Neuer Wert |
|---|
Anleitung: JSON Diff
- Füge links das ursprüngliche und rechts das geänderte JSON ein oder öffne zwei Dateien.
- Syntaxfehler werden unter dem jeweiligen Feld mit Zeile und Spalte angezeigt, damit du sie schnell beheben kannst.
- Lies die Tabelle Geänderte Pfade: Jede Zeile zeigt, ob ein Wert hinzugefügt, entfernt oder geändert wurde, mit altem und neuem Wert.
- Aktiviere Array-Reihenfolge ignorieren, wenn Listen Mengen sind, zum Beispiel Tags oder Berechtigungen.
- Scroll zur Ansicht nebeneinander, um die Änderungen im Kontext zu sehen, oder kopiere die Änderungsliste als JSON.
Warum ein strukturelles JSON-Diff besser ist als ein Text-Diff
Ein reines Text-Diff vergleicht Zeichen und Zeilen. Zwei JSON-Dateien mit denselben Daten können daher völlig unterschiedlich aussehen, wenn eine minifiziert, anders eingerückt oder mit anderer Schlüsselreihenfolge geschrieben ist. Dieses Tool parst zuerst beide Dokumente und vergleicht die Daten: Objekte werden Schlüssel für Schlüssel unabhängig von der Reihenfolge verglichen, Zahlen, Strings, Booleans und null nach ihrem Wert. Gemeldet werden nur echte Änderungen.
So werden Änderungen gemeldet
Jeder Unterschied erhält eine Position im Stil von JSONPath, etwa $.owner.email oder $.items[3].price, und einen von drei Typen:
- hinzugefügt: Der Schlüssel oder das Array-Element existiert nur im geänderten JSON.
- entfernt: Es existiert nur im ursprünglichen JSON.
- geändert: Es existiert in beiden, aber der Wert unterscheidet sich, einschließlich Typänderungen, etwa wenn aus einem String eine Zahl wird.
Arrays werden mit einem Longest-Common-Subsequence-Algorithmus ausgerichtet. Ein am Anfang einer Liste eingefügtes Element wird daher als eine einzige Hinzufügung gemeldet, statt alle folgenden Elemente als geändert zu markieren.
Array-Reihenfolge ignorieren
Viele APIs liefern Listen, deren Reihenfolge keine Bedeutung hat, etwa Rollen, Tags oder IDs. Mit Array-Reihenfolge ignorieren werden Arrays als Sammlungen verglichen: Ein Element gilt nur dann als hinzugefügt oder entfernt, wenn es auf der anderen Seite kein gleiches Gegenstück hat. Die Ansicht nebeneinander sortiert die Array-Elemente dann so, dass gleiche Listen bündig stehen.
Typische Anwendungsfälle
Vergleiche API-Antworten zwischen Staging und Produktion, prüfe, was eine Migration in einer Konfigurationsdatei geändert hat, sieh dir Unterschiede zwischen zwei package.json- oder tsconfig-Dateien an und debugge Snapshot-Tests.
Häufig gestellte Fragen
Spielt die Schlüsselreihenfolge beim Vergleich von JSON eine Rolle?
{"a":1,"b":2} und {"b":2,"a":1} als gleich gemeldet. Die Array-Reihenfolge zählt standardmäßig, weil Arrays geordnet sind, aber du kannst das mit Array-Reihenfolge ignorieren abschalten.Wird mein JSON auf einen Server hochgeladen?
Was bedeuten Pfade wie $.users[2].email?
$ ist die Wurzel des Dokuments, .users ein Schlüssel und [2] das dritte Element eines Arrays (Indizes beginnen bei 0). Schlüssel mit Leer- oder Sonderzeichen stehen in eckigen Klammern, etwa $["first name"].Ist 1 gleich 1.0?
1 und "1", sind verschieden und werden als geändert gemeldet.