Entscheiden Sie, ob Sie Layout oder Daten vergleichen
Zwei JSON-Dokumente können unterschiedlich eingerückt sein und trotzdem dieselben Daten enthalten. Der Vergleich analysiert die Werte: Die Reihenfolge von Objekteigenschaften spielt keine Rolle, die Reihenfolge von Array-Elementen schon. Formatierung erleichtert das Lesen, prüft aber nicht, ob Felder das Schema der Zielanwendung erfüllen.
Verwenden Sie klar identifizierte Versionen und behalten Sie, was vorher und was danach ist. Überprüfen Sie eine bekannte Änderung, um den Bericht zu verstehen. Die Zeichenfolge "2" unterscheidet sich von der Zahl 2. Wenn ein Code wie "001" führende Nullen beibehalten muss, behalten Sie ihn als String, anstatt ihn in eine Zahl zu verwandeln, nur um den Vergleich zu vereinfachen. Diese Entscheidung beeinflusst sowohl die Interpretation als auch die Erhaltung.
Pfade im Differenzbericht lesen
Jede Differenz zeigt einen JSON Pointer-Pfad an und ob ein Wert hinzugefügt, entfernt oder geändert wurde. In /users/0/name wählt 0 das erste Array-Element aus. Es unterscheidet sich von der PDF-Seitenposition eins oder einem gedruckten Tabellenetikett: Array-Indizes beginnen bei Null und nicht bei einem.
Schlüssel mit / verwenden ~1, und Schlüssel mit ~ verwenden ~0. Der Pfad /a~1b fragt die Eigenschaft a/b ab. Ein leerer Pfad gibt das gesamte Dokument zurück. JSON Pointer unterstützt keine JSONPath-Ausdrücke, Platzhalter oder URI-Fragmente. Geben Sie einen exakten Pfad ein und prüfen Sie, ob er vorhanden ist, bevor Sie den ausgelesenen Wert verwenden.
Abgelehnte Eingaben und Limits verstehen
Vergleich und Zeigersuche weisen doppelte Schlüssel, Ganzzahlen außerhalb des sicheren Bereichs und Verschachtelung über hundert Ebenen hinaus zurück. Das Ausblenden von Whitespace behebt diese Probleme nicht. Wenn ein großer Bezeichner Text sein soll, muss seine Quelldarstellung ihn als Zeichenfolge beibehalten; das Akzeptieren einer abgerundeten Zahl stellt den ursprünglichen Bezeichner nicht wieder her.
Der Vergleich akzeptiert eine Million Zeichen pro Dokument und bis zu tausend Unterschiede. Teilen Sie große Strukturen in sinnvolle Einheiten und notieren Sie, welche Fragmente verglichen wurden. Ein fehlender Pfad unterscheidet sich von einer Eigenschaft, die null enthält. Überprüfen Sie sowohl die Quelle als auch den Pfad, um einen Auswahlfehler von einem gültigen leeren Wert zu unterscheiden, bevor Sie die Ausgabe interpretieren.
Bereiten Sie Übersichtstabellen vor, ohne den Kontext zu verlieren
Die Tabelle JSON to Markdown akzeptiert ein Array von Objekten und sammelt Schlüssel aus jeder Zeile. Fehlende Eigenschaften und Null erzeugen leere Zellen, während verschachtelte Strukturen als kompaktes JSON erscheinen. Sonderzeichen werden entwichen und Zeilenumbrüche erscheinen als ↵. Dies unterstützt die Überprüfung durch den Menschen, bewahrt aber nicht jede Unterscheidung als reversibler Export.
Für CSV-Quellen, die nur ein anderes Trennzeichen benötigen, verwenden Sie CSV-Trennzeichen ändern. Das Ersetzen von Kommas als gewöhnlicher Text kann zitierte Zellen durchbrechen. Überprüfen Sie Header, führende Nullen und eine Zelle mit Satzzeichen. Speichern Sie den ursprünglichen JSON neben Ihrem Differenzbericht oder Ihrer Tabelle, damit Unklarheiten gegenüber der gesamten Quelle und nicht gegenüber einer vereinfachten Anzeige untersucht werden können.
Ein geänderter Wert und ein Schlüssel mit einem Schrägstrich
Fügen Sie das erste Objekt als Dokument A und das zweite als B in JSON-Dokumente vergleichen ein. Die Eigenschaftsreihenfolge ist unterschiedlich und der Name des ersten Nutzers wurde geändert. Vergleichen Sie die Dokumente und fragen Sie anschließend einen Wert des zweiten Dokuments mit JSON Pointer ab.
Before: {"users":[{"name":"Ana"}],"a/b":2}
After: {"a/b":2,"users":[{"name":"Luis"}]}Am Pfad /users/0/name erscheint genau eine Änderung von Ana zu Luis. Das Umordnen von Eigenschaften erzeugt keine weiteren Unterschiede. Die Abfrage von /a~1b liefert 2.
Abfrage /users/0/name auch, um Luis zu erhalten. Der Pfad /users/1/name schlägt fehl, weil es keinen zweiten Benutzer gibt: Abwesenheit unterscheidet sich von einem Nullwert.