JSON Diff bezieht sich auf den Unterschiedsvergleich zweier JSON-Daten, um hinzugefügte, gelöschte und geänderte Felder zu finden. In der täglichen Entwicklung müssen wir oft wissen, "wo genau sich zwei JSONs unterscheiden": Was sich an der Antwortstruktur vor und nach API-Upgrades geändert hat, wo die Konfigurationen zweier Umgebungen abweichen, in welchem Feld die tatsächlichen Ergebnisse automatisierter Tests von den erwarteten Basiswerten abweichen. Manuelles zeilenweises Überprüfen ist langsam und fehleranfällig; JSON Diff-Tools können Unterschiede automatisch hervorheben.
JSON-Unterschiedsvergleiche folgen im Allgemeinen zwei Ansätzen. Einer ist der "Textdiff" (textual diff): JSON wird zu standardisiertem mehrzeiligem Text formatiert und dann zeilenweise ähnlich wie Git Diff verglichen, wobei Hinzufügungen, Löschungen und Änderungen jeder Zeile intuitiv angezeigt werden. Der andere ist der "semantische/strukturelle Diff" (structural diff): JSON wird zu einer Baumstruktur geparst und Werte sowie Typen werden feldpfadbasiert (z.B. user.address.city) nacheinander verglichen, unbeeinflusst von Formatierungsfaktoren wie Schreibreihenfolge der Felder oder Einrückungen. Dieses Tool bietet sowohl Textansicht als auch Semantikansicht, die nach Bedarf gewechselt werden können.
Warum vor dem Vergleich formatieren? Weil dieselben Daten völlig unterschiedlich formatiert sein können (einzeilig vs. mehrzeilig, 2 Leerzeichen vs. 4 Leerzeichen). Ein direkter Vergleich des Originaltexts würde eine große Anzahl "falscher Unterschiede" aufgrund von Formatierungsunterschieden erzeugen. Dieses Tool parst und formatiert automatisch die JSONs auf beiden Seiten vor dem Vergleich, um Störungen durch Leerraumzeichen zu beseitigen, sodass Sie nur wirklich sinnvolle Datenänderungen sehen.
Beachten Sie, dass die Schlüsselreihenfolge in JSON-Objekten semantisch unwichtig ist ({"a":1,"b":2} ist gleichwertig mit {"b":2,"a":1}), aber die Elementreihenfolge in Arrays bedeutsam ist ([1,2] ist anders als [2,1]). Wenn Sie also nur an der Übereinstimmung des Array-Inhalts interessiert sind und die Reihenfolge nicht wichtig ist, empfehlen wir, Arrays oder Schlüssel vor dem Vergleich zu sortieren, um zu vermeiden, dass Reihenfolgeänderungen fälschlicherweise als Unterschiede eingestuft werden.
Alle Formatierungen und Vergleiche dieses Tools werden lokal im Browser durchgeführt, Daten werden nicht auf Server hochgeladen; gleichzeitig unterstützt es zeichenweise Hervorhebung, Zählung von Hinzufügungen/Löschungen/Änderungen, gleichzeitigen Vergleich in mehreren Registerkarten und das Teilen von Vergleichsszenarien über URLs. Geeignet für Szenarien wie API-Integration, Konfigurationsvergleich, Testaussagen und Code-Reviews.