Kurz beantwortet
Worin unterscheidet sich der JSON-Vergleich nach Bedeutung von einem Textvergleich?
Diff Anything liest JSON vor dem Vergleich ein, sodass Formatierung und die Reihenfolge der Eigenschaften keine bedeutungslosen Zeilenänderungen erzeugen. Listen von Datensätzen werden automatisch über ein ID-Feld zugeordnet, Zahlen werden nach ihrem Wert verglichen, und beim Übernehmen einer Änderung behält die Zieldatei ihre Kommentare und ihr Layout. Pro-Profile speichern ignorierte Pfade, Arrays nach Schlüssel oder ohne Reihenfolge, Regeln zur Groß-/Kleinschreibung, Zahlentoleranzen und den Prüfstatus.
Formatierung
Schlüsselreihenfolge und Leerraum sind keine Änderungen.
Ein Zeilenvergleich zweier JSON-Dateien zeigt oft Hunderte Änderungen, nur weil ein Serialisierer die Schlüssel anders sortiert oder die Einrückung geändert hat. Diff Anything liest beide Dokumente zuerst ein und vergleicht die Werte, sodass dieselben Daten in anderer Reihenfolge oder anderem Layout keine Unterschiede ergeben.
Ändert sich der Typ eines Werts, etwa von der Zeichenkette "1" zur Zahl 1, wird das als Typänderung gemeldet, nicht als gewöhnliche Wertänderung. Zahlen werden nach ihrem Wert verglichen, sodass 1, 1.0 und 1e0 gleich sind, und Zahlen, die für gewöhnliche Rechenoperationen zu groß oder zu genau sind, behalten ihre genauen Ziffern. Sollen kleine Abweichungen als gleich gelten, stellen Sie eine „Zahlentoleranz“ über 0 ein.
Dateien mit Kommentaren in // oder /* */ und mit nachgestellten Kommas werden akzeptiert. Wiederholt ein Dokument einen Schlüssel, gilt der letzte Wert, und eine Warnung nennt das Duplikat. Wiederholt nur eine der beiden Dateien den Schlüssel, zählt diese Warnung als Unterschied.
Arrays
Array-Einträge über einen Schlüssel zuordnen statt nach Position.
Bei Arrays gehen die meisten JSON-Vergleiche schief. Ist jeder Eintrag eines Arrays ein Objekt mit einem eindeutigen Feld id, _id, uuid oder key, ordnet Diff Anything die Einträge automatisch über dieses Feld zu. Die Pfade lauten dann etwa $.users[id=2].role, ein eingefügter Datensatz wird als hinzugefügt gemeldet, statt alle folgenden Datensätze zu verschieben, und eine Liste, deren Datensätze nur ihre Reihenfolge geändert haben, ergibt einen einzigen Hinweis wie „Reihenfolge der Array-Elemente bei $.users geändert“.
Andere Arrays werden nach Index verglichen. Enthalten beide dieselben Einträge in anderer Reihenfolge, meldet das Ergebnis eine Umsortierung statt einer Änderung an jeder Position. Für Listen von Datensätzen, die ein anderes Feld kennzeichnet, fügen Sie einen Array-Schlüssel hinzu, etwa $.orders = orderNumber; die Pfade lauten dann $.orders[orderNumber=1042].total. Haben alle Objekte ein gemeinsames eindeutiges Feld wie name, schlägt „Empfohlene Regeln“ es zum Übernehmen mit einem Klick vor, zum Beispiel „$.servers nach name vergleichen“.
Fehlt ein Schlüssel in einem Eintrag oder kommt er doppelt vor, lässt sich der Array-Schlüssel nicht verwenden, und der Vergleich fällt mit einer Warnung auf die Array-Indizes zurück. Für Listen, bei denen die Reihenfolge keine Rolle spielt, etwa Tags, tragen Sie den Pfad unter „Pfade ungeordneter Arrays“ ein.
Semantische Regeln
Felder ausblenden, deren Änderung Sie erwarten.
Öffnen Sie „Semantische Regeln“, um festzulegen, was der Vergleich auslassen soll. „Zu ignorierende Pfade“ entfernt wechselnde Felder wie $.metadata.generatedAt. „Pfade ohne Beachtung der Groß-/Kleinschreibung“ vergleicht Zeichenketten an diesen Pfaden ohne Rücksicht auf Groß- und Kleinschreibung. „Zahlentoleranz“ behandelt Zahlen, die sich höchstens um einen festen Betrag unterscheiden, als gleich.
Ein Pfad ist entweder genau oder endet auf .* und deckt dann alles darunter ab. „Empfohlene Regeln“ sieht sich das aktuelle Ergebnis an und schlägt Array-Schlüssel, ignorierte Reihenfolge, Regeln zur Groß-/Kleinschreibung, wechselnde Felder wie generatedAt und Zahlentoleranzen vor, sodass Sie eine Regel mit einem Klick hinzufügen. Die Regeln gehören zur kostenlosen Version; um sie für den nächsten Vergleich in einem Profil zu speichern, brauchen Sie Pro.
- Zu ignorierende Pfade
- Pfade ungeordneter Arrays
- Pfade ohne Beachtung der Groß-/Kleinschreibung
- Pfade mit Array-Schlüsseln (ein Pfad = Schlüssel pro Zeile)
- Zahlentoleranz
Übernehmen und Befehlszeile
Eine Änderung in die andere Datei übernehmen.
Wählen Sie einen Unterschied aus und übernehmen Sie ihn mit „Rechts → links“ oder „Links → rechts“ in die andere Datei. Geschrieben wird nur dieser Wert: Die Zieldatei behält ihre Kommentare, nachgestellten Kommas, Einrückung und Zeilenenden.
Unter Windows vergleicht die Befehlszeile JSON in der kostenlosen Version mit den Standardregeln, und --exit-code gibt 1 zurück, wenn sich die Dateien unterscheiden. In der App eingestellte semantische Regeln liest die Befehlszeile nicht. Mit Pro schreibt „Exportieren“ einen JSON Patch (RFC 6902) oder JSON Merge Patch (RFC 7386), der das linke Dokument in das rechte überführt, und „Als JSON Patch kopieren“ legt einen in die Zwischenablage.
Geeignet für
Wofür sich das eignet.
- Konfigurationsdateien, deren Schlüsselreihenfolge sich ändert
- API-Antworten mit wechselnden Feldern oder ungeordneten Listen
- Vertrauliches JSON, das auf dem eigenen Rechner bleiben soll
Kein Konto, kein Cloud-Vergleichsdienst, keine Nutzungsanalyse, keine Telemetrie und keine KI.
Passende Funktionen
Was Diff Anything dafür mitbringt.
Ablauf in der Praxis
Von der Einrichtung zum geprüften Ergebnis.
Beide JSON-Dateien öffnen
Wählen Sie Dateien aus oder fügen Sie JSON ein. „Automatisch“ öffnet sie im Vergleichstyp JSON in der Ansicht „Baum“; der Tab „Semantisch“ listet jeden Unterschied.
Bekanntes Rauschen entfernen
Tragen Sie Zeitstempel und Anfrage-IDs unter „Zu ignorierende Pfade“ ein, oder übernehmen Sie einen Vorschlag aus „Empfohlene Regeln“.
Arrays über Schlüssel zuordnen
Datensätze mit einem Feld id, _id, uuid oder key werden automatisch zugeordnet. Für andere Datensätze fügen Sie einen Array-Schlüssel hinzu oder übernehmen einen Vorschlag wie „$.servers nach name vergleichen“.
Änderungen prüfen und übernehmen
Filtern Sie nach „Hinzugefügt“, „Entfernt“, „Geändert“ oder „Typänderungen“, markieren Sie Einträge als geprüft und übernehmen Sie die gewünschten Werte auf die andere Seite.
Antworten
Fragen zum Thema „JSON-Dateien vergleichen“.
Worin unterscheidet sich der JSON-Vergleich nach Bedeutung von einem Textvergleich?
Diff Anything liest JSON vor dem Vergleich ein, sodass Formatierung und die Reihenfolge der Eigenschaften keine bedeutungslosen Zeilenänderungen erzeugen. Listen von Datensätzen werden automatisch über ein ID-Feld zugeordnet, Zahlen werden nach ihrem Wert verglichen, und beim Übernehmen einer Änderung behält die Zieldatei ihre Kommentare und ihr Layout. Pro-Profile speichern ignorierte Pfade, Arrays nach Schlüssel oder ohne Reihenfolge, Regeln zur Groß-/Kleinschreibung, Zahlentoleranzen und den Prüfstatus.
Ignoriert Diff Anything die Reihenfolge der JSON-Schlüssel?
Ja. Objekte werden nach Schlüssel verglichen, sodass dieselben Schlüssel in anderer Reihenfolge gleich sind. Bei den Schlüsseln selbst wird Groß- und Kleinschreibung unterschieden.
Kann es JSON-Arrays vergleichen, deren Einträge anders sortiert sind?
Ja. Datensätze mit einem eindeutigen Feld id, _id, uuid oder key werden automatisch darüber zugeordnet. Für andere Datensätze fügen Sie einen Array-Schlüssel wie $.servers = name hinzu; „Empfohlene Regeln“ schlägt einen vor, wenn jeder Eintrag ein gemeinsames eindeutiges Feld hat. Für einfache Listen tragen Sie den Pfad unter „Pfade ungeordneter Arrays“ ein. Andere Arrays werden nach Index verglichen, und ein Array, dessen Einträge nur ihre Reihenfolge geändert haben, wird als umsortiert gemeldet.
Welche Pfadschreibweise verwenden die Ignorierregeln?
Pfade beginnen mit $, zum Beispiel $.metadata.generatedAt. Ein Pfad, der auf .* endet, deckt auch alles darunter ab. Platzhalter mitten im Pfad, [*] und rekursiver Abstieg (..) werden nicht unterstützt.
Gehören die JSON-Vergleichsregeln zur kostenlosen Version?
Ja. Der JSON-Vergleich nach Bedeutung und seine Regeln sind in der kostenlosen Version enthalten, innerhalb der Grenzen von 5 MB pro Datei und 10 Vergleichen pro Tag. Um Regeln in einem Profil zu speichern und Berichte zu exportieren, brauchen Sie Pro.
Mehr erfahren
Quellen wählen, die automatische Erkennung verstehen und den Vergleichstyp nehmen, der Ihre Frage beantwortet.
Handbuch lesenKostenlos und Pro: was enthalten ist
Erhältlich im Mac App Store und im Microsoft Store. Mit der kostenlosen Version testen Sie jeden Vergleichstyp mit Dateien bis 5 MiB pro Seite und 10 neuen Vergleichen pro Tag; Ordner-, Archiv- und CSV-Vergleiche zeigen die ersten 100 Einträge, Binärvergleiche die ersten 100 Byte-Unterschiede und PDFs die ersten 3 Seiten. Reiner Text, JSON und Jupyter-Notebooks sind vollständig enthalten, ebenso das Öffnen aus dem Finder oder Datei-Explorer, diffanything://-Links und AppleScript. Die kostenlose Befehlszeile vergleicht Text, JSON und Notebooks. Ein einmaliger Kauf von Pro hebt die Grenzen der Vorschau und die Tagesgrenze auf und schaltet größere Dateien im Rahmen der technischen Grenzen frei, dazu gespeicherte Profile und Verlauf, das Speichern von Ordner-Schnappschüssen, Berichtsexport und Drucken, JSON-Patch-Export, das Anwenden von Patches, Drei-Wege-Zusammenführung und das Auflösen von Konflikten, Merge-Treiber und Merge-Tool für Git, Ordnersynchronisierung, Batch-Manifeste, vertrauenswürdige Umwandlungen und jeden Vergleichstyp der Befehlszeile.