JSON ohne Berücksichtigung der Schlüsselreihenfolge vergleichen
Zwei JSON-Objekte können gleichwertig sein, auch wenn ihre Eigenschaften in anderer Reihenfolge stehen. Ein Textvergleich markiert diese harmlose Neuordnung als Änderung; ein semantischer Vergleich nicht.
Objekte und Arrays folgen unterschiedlichen Regeln
Die Reihenfolge von Objekteigenschaften hat keine semantische Bedeutung, daher werden Eigenschaften nach Namen zugeordnet. Bei Arrays ist die Reihenfolge meist bedeutungsvoll; Werte bleiben mit ihrem Index verknüpft, sofern die Anwendung keine andere Identitätsregel definiert.
Werte in stabile Pfade zerlegen
Pfade wie $.kunde.adresse.stadt oder $.artikel[2].preis bilden eine stabile Koordinate für jeden primitiven Wert. Der Vergleich dieser Koordinaten zeigt Ergänzungen, Entfernungen und Wertänderungen ohne Rauschen durch Einrückung oder Schlüsselreihenfolge.
- Parsen Sie zuerst beide Dokumente.
- Sortieren Sie Objektschlüssel deterministisch.
- Bewahren Sie Arrayindizes.
- Vergleichen Sie den Wert an jedem resultierenden Pfad.
Erkennen Sie notwendigen Vorverarbeitungsbedarf
Erzeugte Zeitstempel, Anfrage-IDs und ungeordnete Arrays benötigen eventuell eine ausdrückliche Ignorier- oder Sortierregel. Wenden Sie diese Regeln vor dem Vergleich an und dokumentieren Sie sie; andernfalls ist das Ergebnis nicht reproduzierbar.