JSON を Key で並べ替え

ローカル処理
app.sort.view

次の方法でも #data={"name":"Ada"} または #url=... データを流し込めます。読み取り後はアドレスバーから削除されます。

フィールド名でオブジェクトの Key を並べ替え、2回のエクスポートを比較しやすくします。多くのシリアライズ実装は Key 順を保証しないので、並べ替えてから Diff するとかなり静かになります。並べ替え結果を Git に入れると、無意味なキー順の揺れも減ります。

再帰的に並べ替え

入れ子オブジェクトのキーも名前順になります。深い設定を一度に処理でき、階層ごとに手作業で整える必要はありません。

並べ替えはキー名の辞書順で、言語やツールをまたいでも安定した出力になりやすいです。

配列要素は並べ替えない

リスト順には業務上の意味があることが多いので、既定では元の順を保ちます。タイムライン、手順、ランキングなどの配列は値では並べ替えません。

オブジェクトキーだけ正規化し、リストは触りたくないときは、フォーマット画面でついでにオンにするよりこのページの方が明確です。

Diff と一緒に使う

先に並べ替えてから比較すると、「実はキー順だけ違う」ノイズを減らせます。両側を並べ替えてから Diff ページへ貼ってください。

フォーマットページにも「Key を並べ替え」があり効果は似ています。このページはその作業専用です。

並べ替え前
{
  "z": 1,
  "a": { "n": 2, "m": 1 },
  "m": 3
}
並べ替え後
{
  "a": {
    "m": 1,
    "n": 2
  },
  "m": 3,
  "z": 1
}
文字列は辞書順になりますか?

オブジェクトのキーは名前順です。文字列値は並べ替えません。

安定していますか?

同じ入力を何度並べ替えてもキー順は同じになる想定で、Git に入れやすいです。

配列の順序は変わりますか?

配列要素は並べ替えません。オブジェクトのキーだけが対象です。

日本語のキー名はどう並びますか?

JavaScript 既定の文字列比較です。日本語と英数字が混在すると、読みの習慣と完全には一致しないことがあります。チーム内で揃えれば十分です。

おすすめの手順

  1. 「中身は同じだがキー順がバラバラ」な JSON をそれぞれ貼って並べ替えます。
  2. 結果をコピーし、Diff ページで比較します。
  3. 保存やスナップショットテストなら、並べ替え後を正規出力にしてください。
  4. 業務配列に順序の意味があるときは、リストを崩す別スクリプトに切り替えないでください。

並べ替えは「オブジェクトキーの正規化」専用で、汎用のデータ洗浄ではありません。空値削除とマスキングはクリーンアップページを使ってください。