Was dieses Werkzeug tut
Die Schlüssel jedes Objekts, in jeder Tiefe, in alphabetischer Reihenfolge:
{ "server": { "port": 8080, "host": "localhost" }, "debug": true }
{
"debug": true,
"server": {
"host": "localhost",
"port": 8080
}
}
Arrays behalten ihre Reihenfolge
Ein JSON-Objekt ist eine ungeordnete Menge von Name/Wert-Paaren — so sagt es die Spezifikation, und kein Parser verspricht, die von Ihnen geschriebene Reihenfolge zu erhalten. Ein Array ist eine Folge, und seine Reihenfolge ist ein Wert.
["migrate", "seed", "start"]
Das zu sortieren machte aus einer Ablaufanweisung eine Wortliste. Arrays bleiben daher exakt, wie sie sind, auf jeder Ebene.
Die Ordnung ist die der Codepunkte
Z kommt vor a, und a vor ä. Das ist die Unicode-Codepunkt-Ordnung, nicht die alphabetische Ordnung irgendeiner Sprache.
Es ist die einzige Wahl, die auf jeder Maschine dieselbe Ausgabe ergibt. Eine gebietsabhängige Sortierung stellt ä im Deutschen neben a und im Schwedischen hinter z: dieselbe Datei käme je nach Ausführendem anders zurück — was den Hauptzweck des Sortierens zunichtemacht, nämlich zwei auseinandergelaufene Dateien zu vergleichen.
Sortieren ist nicht Kanonisieren
Ein sortiertes Dokument lässt sich leichter vergleichen. Es ist keine kanonische Form, die man hashen kann.
RFC 8785, das JSON Canonicalization Scheme, legt zusätzlich fest, wie Zahlen geschrieben und Zeichenketten escapt werden. Dieses Werkzeug rührt beides bewusst nicht an: 1.0 bleibt 1.0, und \u00e9 bleibt \u00e9. Zwei Dokumente, die genau dasselbe bedeuten, können sich daher weiterhin zu zwei verschiedenen Texten sortieren.
Brauchen Sie einen stabilen Fingerabdruck eines JSON-Werts, nehmen Sie eine JCS-Implementierung. Wollen Sie sehen, was sich zwischen zwei Konfigurationsdateien geändert hat, sortieren Sie beide und vergleichen Sie.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.