Zwei Versionen derselben API-Antwort, und irgendwo steckt der Unterschied. Beim Vergleichen von JSON mit bloßem Auge geht er unter, besonders wenn jemand die Schlüssel umsortiert hat. Das Tool parst beide Seiten und vergleicht die Daten, nicht den Text. Einrückung und Reihenfolge der Schlüssel erzeugen deshalb keine Treffer. Wer JSON vergleichen will, bekommt eine Liste mit Pfad, Art der Änderung, altem und neuem Wert.
JSON vergleichen: so liest du die Ergebnisliste
Der Pfad folgt RFC 6901 (JSON Pointer). /benutzer/0/name meint den Schlüssel name im ersten Eintrag von benutzer. Enthält ein Schlüssel einen Schrägstrich, steht dort ~1; eine Tilde wird zu ~0. Es gibt vier Arten: hinzugefügt, entfernt, geändert und Typ geändert. Jede hat eine eigene Farbe, ein Zeichen (+, -, ~, !) und ein Textlabel, die Farbe allein trägt also keine Information. Eine Zeile über der Liste zählt die Arten. Sind beide Seiten gleich, steht dort stattdessen "Keine Unterschiede".
Werte über 200 Zeichen werden gekürzt. Ein Hinweis nennt die Zahl der verborgenen Zeichen, und die Schaltfläche "Ganzen Wert zeigen" klappt den Wert auf.
Zwei API-Antworten in fünf Schritten abgleichen
- Füge das Original links ein und die geänderte Fassung rechts. Beide Felder enthalten zu Beginn ein Beispiel.
- Warte kurz: Der Vergleich läuft 200 ms nach deinem letzten Tastendruck. Ist eine Seite kein gültiges JSON, nennt die Meldung die Seite, die Zeile und die Spalte.
- Mit Beide formatieren rückst du gültiges JSON sauber ein. Seiten tauschen hilft, wenn du die Dateien vertauscht eingefügt hast.
- Aktiviere Reihenfolge in Arrays ignorieren, wenn die Reihenfolge der Listeneinträge für dich keine Rolle spielt.
- Mit Diff als Text kopieren bekommst du eine Zeile pro Unterschied, mit Als JSON Patch kopieren einen Patch, den ein Programm anwenden kann.
Array-Reihenfolge, Zahlen und der JSON-Patch-Export
Objekte vergleicht das Tool über Schlüssel: {"a":1,"b":2} ist gleich {"b":2,"a":1}. Arrays vergleicht es standardmäßig nach Index. [1,2,3] gegen [3,2,1] ergibt zwei Änderungen, denn der mittlere Eintrag ist gleich.
Mit der Option zur Array-Reihenfolge bildet das Tool für jedes Element einen kanonischen Text mit sortierten Schlüsseln und gleicht gleiche Elemente als Multimenge ab. Verschachtelte Arrays werden dann ebenfalls ohne Reihenfolge verglichen. Dafür erscheint ein im Inneren geänderter Eintrag als ein entfernter und ein hinzugefügter Eintrag.
Zahlen vergleicht das Tool nach Wert, 1 und 1.0 sind also gleich. null ist nicht dasselbe wie ein fehlender Schlüssel. Ein leeres Objekt gegen ein leeres Array ist eine Typänderung, ebenso 1 gegen "1". Strings gelten nur bei exakter Übereinstimmung als gleich, auch bei Groß-/Kleinschreibung und Leerzeichen.
Der JSON Patch (RFC 6902) enthält add, remove und replace und macht aus der linken Seite die rechte. Array-Einträge werden von hinten nach vorn entfernt und von vorn nach hinten hinzugefügt. Ein move oder copy erzeugt das Tool nicht. Ignorierst du die Array-Reihenfolge, ist die Schaltfläche gesperrt.
Grenzen beim Parsen und was im Browser bleibt
Parsen und Vergleichen laufen im Browser mit JSON.parse. Das Tool sendet keine Anfrage und speichert nichts; das Netzwerk-Panel deines Browsers zeigt es. Die Zwischenablage nutzt es nur, wenn du eine Kopier-Schaltfläche drückst.
Jede Seite darf 2.000.000 Zeichen lang sein, mehr wird mit einer Meldung abgelehnt. Ganze Zahlen über 2^53 verlieren an Genauigkeit: 9007199254740993 wird als 9007199254740992 gelesen, zwei verschiedene riesige Zahlen können also gleich aussehen. Steht ein Schlüssel doppelt im Text, gilt der letzte Wert. Kommentare und Kommas am Ende sind kein JSON, die Fehlermeldung nennt Zeile und Spalte. Die Liste zeigt die ersten 1.000 Unterschiede, die Kopier-Schaltflächen nutzen alle. Ein Byte Order Mark am Anfang wird vor dem Parsen entfernt.