JSON nach Key sortieren

Lokale Verarbeitung
app.sort.view

Daten auch über #data={"name":"Ada"} oder #url=... einfügen; nach dem Lesen wird die Adressleiste geleert.

Objektkeys nach Namen sortieren, damit zwei Exporte leichter zu vergleichen sind. Viele Serializer garantieren keine Key-Reihenfolge; nach dem Sortieren ist Diff ruhiger. Sortierte Ergebnisse ins Git, weniger sinnloses Key-Rauschen.

Rekursiv sortieren

Auch Keys in nested Objekten nach Namen. Tiefe Configs in einem Durchgang, ohne Schicht für Schicht von Hand.

Lexikografisch nach Key-Namen – stabile Ausgabe über Sprachen und Tools.

Array-Elemente bleiben

Listenreihenfolge hat oft fachliche Bedeutung; Standard ist die Originalreihenfolge. Timelines, Schritte, Rankings werden nicht nach Wert sortiert.

Nur Objektkeys normalisieren, Listen unangetastet: diese Seite ist klarer als ein Häkchen beim Formatieren.

Zusammen mit Diff

Erst sortieren, dann vergleichen, weniger Rauschen «nur andere Key-Reihenfolge». Beide Seiten sortieren, dann in Diff einfügen.

Die Formatierungsseite hat ebenfalls «Keys sortieren»; hier liegt der Fokus nur darauf.

Beispiel

Vor dem Sortieren
{
  "z": 1,
  "a": { "n": 2, "m": 1 },
  "m": 3
}
Nach dem Sortieren
{
  "a": {
    "m": 1,
    "n": 2
  },
  "m": 3,
  "z": 1
}
Werden Strings lexikografisch sortiert?

Objektkeys nach Namen; String-Werte werden nicht sortiert.

Ist es stabil?

Dieselbe Eingabe sollte mehrfach dieselbe Key-Reihenfolge ergeben – geeignet für Git.

Ändert sich die Array-Reihenfolge?

Array-Elemente werden nicht umsortiert. Nur Objektkeys.

Wie werden nicht-ASCII-Keys sortiert?

Nach JavaScripts Standard-Stringvergleich. Bei gemischten Schriften kann die Reihenfolge von gewohnten Sortierregeln abweichen – im Team einheitlich halten.

Empfohlener Ablauf

  1. Zwei JSON-Dokumente mit gleichem Inhalt, chaotischer Key-Reihenfolge, jeweils sortieren.
  2. Ergebnis kopieren und auf der Diff-Seite vergleichen.
  3. Für Repo oder Snapshot-Tests die sortierte Fassung als Normausgabe nutzen.
  4. Hat ein fachliches Array Reihenfolge, keine anderen Skripte verwenden, die Listen mischen.

Sortieren dient der Key-Normalisierung, nicht der allgemeinen Datenbereinigung. Leere Werte und Maskierung auf der Bereinigungsseite.