Zwei JSON-Dateien vergleichen
Fügen Sie beide JSON-Dokumente in die beiden Felder des JSON-Diff-Tools ein, vergleichen Sie sie und lesen Sie die Änderungsliste, die es erzeugt – Ergänzungen, Entfernungen und Wertänderungen, während Schlüsselreihenfolge und Whitespace ignoriert werden. Alles läuft in Ihrem Browser; exportieren Sie das Ergebnis als RFC 6902-Patch, wenn Sie eine maschinenlesbare Aufzeichnung der Unterschiede brauchen.
Zwei JSON-Dateien vergleichen erklärt
Zwei JSON-Dokumente unterscheiden sich selten auf auffällige Weise: Das eine hat einen Schlüssel, der dem anderen fehlt; das eine schachtelt seine Konfiguration eine Ebene tiefer; das eine schreibt eine Zahl in Anführungszeichen, die das andere unquotiert lässt – und ein zeilenweiser Diff beantwortet jeden dieser kosmetischen Unterschiede mit einer roten Wand. Was Sie tatsächlich wissen wollen, ist kleiner und nützlicher: welche Werte sich geändert haben, welche Schlüssel hinzugekommen oder verschwunden sind und ob die Struktur, auf die Sie sich verlassen, noch die Form hat, die Sie erwarten.
Diese Seite führt die Aufgabe mit dem JSON-Diff-Tool der Website von Anfang bis Ende durch – vier Schritte, jeder mit einer Prüfung, die Sie vor dem nächsten Schritt erledigen können. Der gesamte Vergleich läuft in Ihrem Browser: Die Dokumente werden lokal in Syntaxbäume geparst und verlassen den Tab nie. Deshalb ist dieselbe Vorgehensweise sicher für Konfigurationen, die Hostnamen enthalten, für Zugangsdaten, die Sie bereits rotiert haben, oder für Kundendaten, die Sie nicht gern in das Formularfeld eines Fremden einfügen würden.
Bevor Sie loslegen, sollten Sie wissen, was das Tool Ihnen verrät und was nicht. Es vergleicht die beiden Dokumente, die Sie ihm geben – es kennt weder die git-Historie noch Deployments noch die Absicht dahinter. Die Änderungsliste ist eine Tatsache über zwei Dokumente, keine Erklärung, wer was warum geändert hat; die folgenden Schritte sagen Ihnen auch, wo Sie nachschauen, wenn Sie diese zweite Hälfte der Geschichte brauchen.
Jeder der folgenden Schritte passiert im JSON-Diff-Tool – zwei Felder, eine Vergleichsaktion und eine Änderungsliste, die alles rein Kosmetische ignoriert.
Wenn Ihnen Objekte, Arrays und Schlüssel als Vokabular noch neu sind, erklärt der Leitfaden „Was ist JSON“ das in einfacher Sprache, bevor Sie irgendetwas vergleichen.
Die Schritte
Öffnen Sie das Tool und laden Sie das erste Dokument
Öffnen Sie „JSON vergleichen“ und legen Sie das erste Dokument in das linke Feld. Sie können es einfügen, die Datei auf das Feld ziehen oder das eingebaute Beispiel laden, wenn Sie lieber erst mit Beispieldaten üben wollen. Dateien liest der Browser selbst – es gibt in dieser Prozedur an keiner Stelle einen Upload-Schritt.
Prüfen: Das linke Feld nimmt das Dokument ohne Parse-Fehler an, was bedeutet, dass das JSON gültig genug für den Vergleich war. Ein Parse-Fehler dort ist das Tool, das Ihnen sagt, welche Zeile Sie korrigieren müssen, bevor irgendetwas anderes funktioniert.
Laden Sie das zweite Dokument rechts
Legen Sie das zweite Dokument auf dieselbe Weise in das rechte Feld. Die Reihenfolge ist für die Benennung wichtig, nicht für die Korrektheit: Links ist die Referenz, rechts die Version, die dagegen verglichen wird, und die Schaltfläche „Tauschen“ tauscht die Plätze, falls Sie die Richtung falsch gewählt haben. Sobald beide Seiten geladen sind, kann der Vergleich laufen.
Prüfen: Beide Felder enthalten ein Dokument statt eines Fehlers. Wenn nur eine Seite geparst werden kann, startet der Vergleich nicht – beheben Sie zuerst die Seite mit dem Fehler, statt ein Dokument gegen nichts zu vergleichen.
Führen Sie den Vergleich aus und lesen Sie die Änderungsliste
Führen Sie den Vergleich aus. Das Ergebnis ist eine Liste echter Unterschiede: Schlüssel, die auf einer Seite hinzukommen, Schlüssel, die auf der anderen entfernt wurden, und Werte, die sich unter einem unveränderten Schlüsselpfad geändert haben. Schlüsselreihenfolge und Whitespace werden bewusst ignoriert – {"a":1,"b":2} und {"b":2,"a":1} sind hier dasselbe Dokument, und genau das festzuhalten ist der Sinn eines semantischen Diffs. Mit Alt+↑ und Alt+↓ gehen Sie die Liste durch, ohne zur Maus greifen zu müssen.
Prüfen: Eine Änderung, von der Sie wissen, dass es sie gibt (benennen Sie vor dem Vergleich absichtlich einen Wert um, wenn Sie eine Generalprobe wollen), erscheint als genau eine Zeile, nicht als Umformulierung jeder umliegenden Zeile. Das ist das Signal, dass Sie Semantik lesen und nicht Text.
Exportieren Sie die Unterschiede als Patch
Wenn die Liste stimmt, exportieren Sie sie als RFC 6902 JSON Patch – ein kleines, geordnetes Dokument, das für jede Änderung add, remove und replace sagt. Der Patch macht aus einer Lesesitzung eine Aufzeichnung: Geben Sie ihn an einen Kollegen weiter, hängen Sie ihn an ein Ticket an oder wenden Sie ihn an anderer Stelle auf das linke Dokument an und reproduzieren Sie die rechte Seite exakt.
Prüfen: Der exportierte Patch ist selbst gültiges JSON und merklich kleiner als jedes der beiden Dokumente. Wendet man ihn auf eine Kopie des linken Dokuments an, sollte das rechte herauskommen.
Was ein semantischer Diff bewusst ignoriert
Das Tool parst beide Dokumente in Bäume und vergleicht die Bäume, sodass drei Arten von Unterschied nie in die Änderungsliste gelangen. Die Schlüsselreihenfolge: Ein Objekt ist eine Zuordnung, keine Sequenz, und nichts, das ein solches Objekt liest, leitet aus der Reihenfolge seiner Schlüssel eine Bedeutung ab. Unbedeutender Whitespace: Einrückung und Abstände sind Darstellung, und das Neuformatieren einer der beiden Seiten darf keine einzige Änderung erzeugen. Die Schreibweise einer Zahl, wenn der Wert gleich ist: 1 und 1.0 bezeichnen in den Vergleichen, die zählen, dieselbe Zahl.
In die Liste gelangt alles, was die Bedeutung des Dokuments ändert: ein geänderter Wert, ein hinzugekommener oder verschwundener Schlüssel, ein Typwechsel – ein String "42", der zur Zahl 42 wird, ist eine echte Änderung, und das Tool stuft sie auch als solche ein, statt sie stillschweigend zu akzeptieren. Fehlt eine Änderung, die Sie erwartet haben, lautet die ehrliche erste Frage, ob es eine der drei kosmetischen war.
Arrays: Abgleich über die Position oder über den Schlüssel
Arrays sind der eine Ort, an dem ein semantischer Diff eine Entscheidung treffen muss, denn ["a","b"] gegen ["b","a"] lässt sich zweierlei lesen: alles ist umgezogen, oder nichts hat sich geändert und die Reihenfolge ist bedeutsam. Das Tool lässt Sie entscheiden – der Abgleich über den Index behandelt das Array als Sequenz, während der Abgleich über ein Primärschlüsselfeld die Elemente wie eine Datenbank über ihre Identität ausrichtet.
Bei Listen von Datensätzen (Benutzer, Hosts, Ereignisse) ist der Schlüsselabgleich fast immer das Richtige: Fügt man oben einen neuen Datensatz ein, ergibt das genau eine Ergänzung, statt dass jede Zeile als geändert erscheint. Bei Listen, in denen die Reihenfolge die Bedeutung ausmacht – Schritte einer Prozedur, Ranglisten –, ist der Indexabgleich die ehrliche Wahl. Treffen Sie die Entscheidung bewusst, statt das Standardverhalten für Sie entscheiden zu lassen.
Große Dateien und wo die Arbeit tatsächlich läuft
Der Vergleich läuft in einem Web Worker, außerhalb des Hauptthreads der Seite, mit einer Obergrenze von 100 MB pro Dokument. Die praktische Folge: Auch ein großes Paar braucht echte Sekunden für den Vergleich – aber der Tab bleibt während der Arbeit lebendig, und Sie können die bereits angezeigte Änderungsliste weiter durchscrollen, statt einer eingefrorenen Seite zuzusehen.
Der Drei-Wege-Merge-Modus – bei dem ein Basisdokument auf zwei bearbeitete Zweige trifft – rechnet in der Seite selbst und stoppt deshalb bei 8 MB. Sind Ihre Merge-Eingaben größer, steht Ihnen der oben beschriebene Vergleich zweier Dokumente weiterhin in voller Größe zur Verfügung.
Wann ein JSON-Diff das falsche Werkzeug ist
Zwei Dokumente in unterschiedlichen Formaten – eine JSON-Konfiguration und eine YAML-Fassung davon – müssen zuerst konvertiert werden, sonst verschwendet der Diff alle seine Zeilen darauf zu behaupten, die Container seien verschieden. Wandeln Sie eine Seite in das Format der anderen um und vergleichen Sie dann. Und wenn die Frage gar nicht strukturiert ist – zwei Logdateien, zwei Absätze Fließtext –, ist ein einfacher Textvergleich das richtige Werkzeug, und die JSON-Maschinerie erzeugt nur Rauschen.
Umgekehrt gilt dasselbe: Wenn Sie dabei sind, eine Änderungsliste zu lesen und die Absicht laut zu erzählen – „hier haben sie das Timeout verschoben“ –, hat der Diff seine Arbeit getan, und eine Aufzeichnung der Änderung gehört an einen strukturierten Ort. Der RFC 6902-Export existiert genau dafür, dass eine Lesesitzung mit einem Artefakt statt einer Erinnerung enden kann.
Häufig gestellte Fragen
Werden meine JSON-Dateien hochgeladen, wenn ich sie hier vergleiche?
Nein. Beide Dokumente werden in Ihrem Browser-Tab geparst und verglichen – die Vergleichs-Engine läuft in einem Web Worker auf Ihrer Maschine, und es gibt keinen Upload-Endpunkt, an den sie gesendet werden könnten. Sie können das in den DevTools nachprüfen: Öffnen Sie das Netzwerk-Panel, führen Sie einen Vergleich aus, und keine Anfrage enthält Ihre Daten. Die Content-Security-Policy der Seite lehnt außerdem konstruktionsbedingt ausgehende Verbindungen ab.
Warum erscheint das Umsortieren von Schlüsseln nicht als Unterschied?
Weil ein Objekt eine Zuordnung ist, keine geordnete Liste – {"a":1,"b":2} und {"b":2,"a":1} tragen exakt dieselbe Information, und jeder JSON-Parser baut aus beiden denselben Baum. Ein Diff, der eine umsortierte Schlüsselreihenfolge meldet, meldet in Wahrheit Formatierung, was für den Leser, der wissen will, was sich semantisch geändert hat, nur Rauschen ist. Whitespace wird aus demselben Grund ignoriert.
Was ist ein RFC 6902-Patch und warum sollte ich einen exportieren?
RFC 6902 definiert JSON Patch: ein JSON-Dokument, das Operationen auflistet – add, remove, replace, move, copy, test –, die jeweils auf einen bestimmten Pfad zeigen. Exportieren Sie Ihren Vergleich als solchen, wird aus der Änderungsliste eine maschinenanwendbare Aufzeichnung: Derselbe Patch, auf das linke Dokument angewendet, ergibt die rechte Seite – das macht ihn zu einer präzisen Übergabe an einen Kollegen, eine Test-Fixture oder ein Migrationsskript.
Wie groß dürfen die beiden JSON-Dateien sein?
Bis zu 100 MB pro Dokument. Parsen und Vergleich laufen in einem Web Worker, daher kostet ein großes Paar echte Zeit, friert aber den Tab nicht ein – die Oberfläche bleibt bedienbar und bereits gerenderte Zeilen bleiben scrollbar, während der Worker arbeitet. Der separate Drei-Wege-Merge-Modus hat eine eigene, kleinere Obergrenze von 8 MB, weil diese Berechnung im Hauptthread der Seite läuft.
Kann das Tool Arrays vergleichen, ohne jede Zeile als geändert zu behandeln?
Ja – das ist die Einstellung zum Array-Abgleich. Der Indexabgleich vergleicht Element 0 mit Element 0 und ist richtig, wenn die Reihenfolge Bedeutung trägt. Der Schlüsselabgleich richtet die Elemente nach einem Feld Ihrer Wahl aus (einer ID, einem Slug, einem Hostnamen) und ist richtig für Listen von Datensätzen, bei denen das Einfügen einer neuen Zeile genau eine Änderung erzeugen soll, nicht das Umschreiben der ganzen Liste. Diese Einstellung existiert, weil keine der beiden Antworten für jedes Array die richtige ist.
Sagt mir der Diff, welche Änderung zuerst geschah oder wer sie gemacht hat?
Nein – und kein Diff kann das. Ein Vergleich sieht zwei Dokumente, keine Zeitleiste: Er weiß, dass sich ein Wert geändert hat, aber nicht wann, von wem oder warum. Diese Historie lebt in der Versionsverwaltung, in Deployment-Logs oder wo auch immer ein Prozess die Datei bearbeitet hat. Der Patch-Export ist die Brücke: Hängen Sie ihn an das Ticket oder den Commit an, in dem die Geschichte erzählt wird.
Welche verwandten Tools sollten Sie als Nächstes nutzen?
- JSON vergleichenVergleicht JSON semantisch, Schlüsselreihenfolge wird ignoriertÖffnen
- JSON formatierenEinrückung und Sortierung einstellen, Kommentare entfernenÖffnen
- JSON validierenSyntax prüfen mit exakter Zeile und Spalte, per Klick reparierenÖffnen
- Text vergleichenTexte zeilen-, wort- und zeichenweise vergleichenÖffnen
- Was ist JSONLeitfaden in verständlicher SpracheÖffnen
- JSON in Excel-TabelleEine echte Aufgabe, Schritt für SchrittÖffnen