100 % lokal — Ihre Daten verlassen nie Ihren Browser

JSON-Schlüssel sortieren — ein lesbares Diff

JSON-Schlüssel alphabetisch sortieren, auf jeder Ebene. Zwei gleich sortierte Dateien unterscheiden sich nur noch in dem, was sich wirklich geändert hat.

Sofort Privat Null Cookies
Einrückung

JSON-Eingabe

JSON-Ausgabe

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.

Häufige Fragen

Warum werden meine Arrays nicht sortiert?
Weil die Reihenfolge eines Arrays zu seiner Bedeutung gehört. `["read", "write"]` und `["write", "read"]` mögen für Sie dieselbe Menge sein und für das, was die Datei liest, ein anderer Wert: Schritte einer Pipeline, eine Prioritätsfolge, eine Reihe von Migrationen. Objektschlüssel tragen im JSON-Datenmodell keine Reihenfolge; Array-Elemente schon.
Warum kommt Z vor a und a vor ä?
Sortiert wird nach Unicode-Codepunkt, nicht nach den Regeln einer Sprache. Das ist die einzige Ordnung, die auf jeder Maschine dieselbe Datei ergibt: eine gebietsabhängige Sortierung ordnete Ihre Schlüssel in Stockholm anders als in Berlin, und eine Sortierung zum Vergleichen von Dateien muss vor allem reproduzierbar sein.
Ergibt Sortieren eine kanonische Form, die ich hashen kann?
Nicht ganz, und der Unterschied zählt. Die Schlüssel zu sortieren ist ein Teil der Kanonisierung; RFC 8785 (JSON Canonicalization Scheme) legt zusätzlich fest, wie Zahlen geschrieben und Zeichenketten escapt werden. Dieses Werkzeug lässt beides bewusst in Ruhe: zwei Dokumente, die sich nur in `1.0` gegen `1` unterscheiden, sortieren sich weiterhin zu verschiedenen Texten. Nehmen Sie eine JCS-Implementierung, wenn Sie einen Hash brauchen.

Ähnliche Konverter