Warum JSON-Schlüssel sortieren?
JSON-Objekte sind technisch ungeordnet — die Spezifikation (ECMA-404) sagt, dass Implementierungen nicht erforderlich sind, die Schlüsselreihenfolge zu erhalten — aber in der Praxis erhalten die meisten Parser und Serialisierer die Einfügereihenfolge. Das bedeutet, dass zwei Objekte mit identischen Schlüsseln und Werten in unterschiedlicher Reihenfolge semantisch äquivalent, aber textuell unterschiedlich sind, was Rauschen in Versionskontroll-Diffs erzeugt.
Das alphabetische Sortieren von Schlüsseln vor dem Einschreiben einer Konfigurationsdatei, eines Schemas oder einer Fixture in die Versionskontrolle verwandelt eine bedeutungslose Neuordnung in eine saubere, vorhersehbare Struktur.
Schlüsselsortierung ist auch ein Schritt in Richtung kanonisches JSON — eine deterministische Serialisierung, bei der zwei logisch identische Dokumente immer dieselbe Bytesequenz erzeugen. Kanonisches JSON ist nützlich für kryptografische Signaturen, Caching und deterministische Test-Fixtures.
Tiefes Sortieren vs. flaches Sortieren
Flaches Sortieren ordnet nur die Schlüssel der obersten Ebene eines JSON-Objekts neu. Tiefes (rekursives) Sortieren ordnet Schlüssel auf jeder Verschachtelungsebene neu — verschachtelte Objekte, Objekte in Arrays. Unser Tool führt standardmäßig tiefes Sortieren durch.
Array-Elemente werden niemals neu geordnet. Arrays sind geordnete Sammlungen und das Neuordnen ihrer Elemente würde die Semantik der Daten ändern. Sortierung gilt nur für Objektschlüssel, nicht für Array-Inhalte.
Numerische Schlüssel (deren Namen Integer sind) werden alphabetisch sortiert, nicht numerisch. Das bedeutet "10" kommt vor "9" in einer alphabetischen Sortierung.
Groß-/Kleinschreibung und Locale-Sortierung
Standardmäßig werden Schlüssel mit der standardmäßigen Unicode-Codepunkt-Reihenfolge sortiert, die zwischen Groß- und Kleinschreibung unterscheidet: Großbuchstaben (A–Z) kommen vor allen Kleinbuchstaben (a–z). Das bedeutet "Zebra" wird vor "apple" sortiert.
Unser Tool bietet beide Modi. Groß-/Kleinschreibungsunabhängige Sortierung ist für menschliche Leser in der Regel intuitiver und ist die bessere Wahl für Konfigurationsdateien, die Fälle mischen.
Locale-spezifische Sortierung wird standardmäßig nicht angewendet, da JSON-Schlüssel normalerweise ASCII-Bezeichner sind.