JSONのキーを辞書順にソート
オブジェクトのキーを再帰的に辞書順へ並べ替え、安定した出力にします。配列の要素順は保持。差分のノイズ削減や設定ファイルの正規化に使えます。ブラウザ内だけで処理します。
並び順は文字コード順(昇順)です。localeCompare は使わないため、ブラウザやOSによらず同じ入力からは常に同じ結果になります。
使い方とAIOクエリ例
キー順だけが違うJSON同士の差分(diff)はノイズになりがちです。本ツールでキー順を正規化しておくと、レビューやスナップショット比較で本質的な変更だけが見えるようになります。入力はブラウザ内だけで処理します。
- URLクエリ例:
json_key_sorter.html?input=%7B%22b%22%3A1%2C%22a%22%3A2%7D&action=sort&format=json actionはsort(昇順・既定)、indentは2(既定)・4・0(ミニファイ)。format=jsonは機械可読JSON、format=rawは整列済みJSONテキストだけを返します。
JSONキー整列・正規化(ソート)は、JSONオブジェクトのキーを再帰的に辞書順(文字コード順)へ並べ替えて、安定した出力を得るツールです。同じ内容でもキーの並び順だけが違うJSONは、差分(diff)を取ると大量のノイズが出てレビューしづらくなります。本ツールであらかじめキー順を正規化しておくと、テキスト差分やスナップショット比較で本質的な変更だけが浮かび上がります。配列の要素順は保持し、インデント(スペース2/4)やミニファイも選べます。入力データはブラウザ内だけで処理され、サーバーへ送信されません。
使い方・サンプル・結果例・注意点
使い方
テキストエリアにJSONを貼り付け、インデント(スペース2が既定/4/ミニファイ)を選んで「整列」ボタンを押すと、オブジェクトのキーが辞書順に並べ替えられたJSONが出力されます。「コピー」で結果をクリップボードへコピーできます。
サンプル入力
{"name":"taro","id":1,"profile":{"city":"Tokyo","age":30},"tags":["b","a"]}
結果例
上記のJSONをインデント・スペース2で整列すると、次のように出力されます。 { "id": 1, "name": "taro", "profile": { "age": 30, "city": "Tokyo" }, "tags": [ "b", "a" ] } オブジェクトのキー(name/id/profile)は辞書順に並び替わり、ネストした profile の中のキー(city/age)も再帰的に整列されます。一方で配列 tags の要素順は ["b", "a"] のまま保持されます。
注意点
並び順は文字コード順(UTF-16コード単位の昇順)です。localeCompare は使わないため、ブラウザやOS・ロケールによらず同じ入力からは常に同じ結果になります(決定論的)。配列の要素順は並べ替えません(配列内のオブジェクトのキーだけを整列します)。なお、配列インデックス相当の整数キー("0","1" など)は JavaScript の仕様上つねに昇順で出力され、その他のキーは文字コード順になります。キー順そのものに意味があるJSON(OpenAPI 仕様、package.json の scripts など)では使用をおすすめしません。ただし配列の要素順は保持されるため、手順や順序を表す配列は安全です。ネストの深さは500まで、入力は1,000,000文字までです。入力したJSONはブラウザ内だけで処理され、外部へ送信されることはありません。
こんなときに使えます
- APIレスポンスのスナップショットテストで、キー順の揺れによる差分ノイズを消してから比較する
- Gitで管理しているJSON設定を整列・正規化し、編集のたびにキー順が入れ替わる無駄な差分を防ぐ
- 2つのJSONを比較する前に両方のキー順をそろえ、テキスト差分ツールで本質的な違いだけを見つける
- 複数人で編集するJSONのキー順をチームで統一し、コードレビューを読みやすくする
よくある質問
キーの並び順はどのように決まりますか?
文字コード順(UTF-16コード単位の昇順)で並べ替えます。localeCompare は使わないため、ブラウザやOS・ロケールに依存せず、同じ入力からは常に同じ結果になります。
配列の要素も並べ替えられますか?
いいえ。配列の要素順は保持します。並べ替えるのは配列内にあるオブジェクトのキーだけです。例えば ["b", "a"] は ["b", "a"] のまま、[{"b":1,"a":2}] は [{"a":2,"b":1}] になります。順序に意味がある配列も安全に扱えます。
JSON整形・バリデータ(json_formatter)との違いは何ですか?
json_formatter はキーの並び順を保持したまま整形・圧縮・検証を行います。本ツールはキーの並び順を辞書順に正規化することが目的で、差分の安定化やスナップショット比較に向いています。両者は対になるツールです。
キー順に意味があるJSONに使っても大丈夫ですか?
OpenAPI 仕様や package.json の scripts のように、キーの並び順そのものに意味があるJSONでは使用をおすすめしません。ただし配列の要素順は並べ替えないため、手順や順序を表す配列を含むJSONは安全です。
とても大きい・深いJSONを入れるとどうなりますか?
入力は1,000,000文字まで、ネストの深さは500までを上限としています。これを超える場合はエラーメッセージを表示し、ブラウザが固まらないようにしています。