JSONソート
JSONオブジェクトのキーをアルファベット順に並べ替え
入力
ソート結果
JSONソートとは?
プルリクエストを開いて、誰かがJSON設定にキーを追加しただけなのに他のすべてのキーが移動してしまう巨大なdiffを見たことはありますか?それがソート済みJSONが解決する問題です。JSONオブジェクトのキーは仕様で順序が定義されておらず(RFC 8259参照)、パーサーやランタイムは任意の順序で返すことができます。キーをアルファベット順にソートすると、一貫した予測可能な出力が得られます — git diff、ハッシュ生成、APIテスト、再現可能なテストフィクスチャに最適です。
このツールはJSONオブジェクトのキーを再帰的にソートします。ネストされたオブジェクトのキーもソートされます。配列はそのまま、オブジェクトのキーのみが並べ替えられます。処理はブラウザで実行されます。
使い方
JSONを貼り付け
左のエディタにJSONを貼り付けるか、ファイルをアップロードしてください。サンプルデータにはサンプルを使用してください。ツールは任意の有効なJSONを受け付けます。
ソート結果を表示
右パネルにキーがアルファベット順にソートされた同じJSONが表示されます。ネストされたオブジェクトは再帰的にソートされます。無効なJSONはエラーを表示します。
コピーまたはダウンロード
結果を取得するにはコピーまたはダウンロードを使用してください。ソートせずにフォーマットするにはJSONフォーマッターを、圧縮するにはJSONミニファイアーを使用してください。
JSONソートの例
JSONオブジェクトのキーをアルファベット順にソートする例です。ネストされたオブジェクトは再帰的にソートされます。
例:キーが未ソートの加入者レコード
入力(キーは任意の順序):
ソート結果:
キー順序が重要な場合
キーがソートされているとgit diffがきれいになります:変更が目立ち、並べ替えられた行に埋もれません。一部のシステムはハッシュや署名にJSON文字列化を使用します。ソートされたキーで出力が決定的になります。JavaScriptではJSON.stringifyはキー順序を保証しません。このツールは入力順序に関係なく一貫した出力を提供します。
よくある質問
JavaScriptでJSONキーをアルファベット順にソートするには?
キーをソートするreplacerを使ってJSON.stringify()を使用できます:JSON.stringify(obj, Object.keys(obj).sort())で浅いソート。深い再帰的ソートには再帰的ヘルパー関数が必要です — それがまさにこのツールが代わりにやってくれることです。コード不要。
JSONキーのソートはデータを変更しますか?
いいえ。キーの順序のみが変わります。すべての値、ネストされたオブジェクト、配列はまったく同じです。出力は意味的に同一のJSON — パーサーは同一に処理します。
なぜJSONキーをソートすべきですか?
主な理由:きれいなGit diff(キーが並べ替えられても余計な変更なし)、JSONハッシュや署名のための決定論的な出力、一貫したテストフィクスチャ。
配列要素もソートされますか?
いいえ。オブジェクトのキーのみがソートされます。配列の順序は意図的に保持されます — 配列要素をソートするとデータの意味が変わります。
データはサーバーに送信されますか?
いいえ。ソートは完全にブラウザで実行されます。どこにもアップロードされません。
関連ツール
JSON構文についてはRFC 8259とMDNを参照してください。json.orgのJSON仕様で形式が定義されています。コマンドライン処理にはjqがソートをサポートしています。Git diffはソートされたキーで比較がきれいになります。JSON.stringify()、Lodash sortBy、Postmanも参照してください。