入力

ソート結果

JSONソートとは?

プルリクエストを開いて、誰かがJSON設定にキーを追加しただけなのに他のすべてのキーが移動してしまう巨大なdiffを見たことはありますか?それがソート済みJSONが解決する問題です。JSONオブジェクトのキーは仕様で順序が定義されておらず(RFC 8259参照)、パーサーやランタイムは任意の順序で返すことができます。キーをアルファベット順にソートすると、一貫した予測可能な出力が得られます — git diff、ハッシュ生成、APIテスト、再現可能なテストフィクスチャに最適です。

このツールはJSONオブジェクトのキーを再帰的にソートします。ネストされたオブジェクトのキーもソートされます。配列はそのまま、オブジェクトのキーのみが並べ替えられます。処理はブラウザで実行されます。

使い方

1

JSONを貼り付け

左のエディタにJSONを貼り付けるか、ファイルをアップロードしてください。サンプルデータにはサンプルを使用してください。ツールは任意の有効なJSONを受け付けます。

2

ソート結果を表示

右パネルにキーがアルファベット順にソートされた同じJSONが表示されます。ネストされたオブジェクトは再帰的にソートされます。無効なJSONはエラーを表示します。

3

コピーまたはダウンロード

結果を取得するにはコピーまたはダウンロードを使用してください。ソートせずにフォーマットするには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 8259MDNを参照してください。json.orgのJSON仕様で形式が定義されています。コマンドライン処理にはjqがソートをサポートしています。Git diffはソートされたキーで比較がきれいになります。JSON.stringify()Lodash sortByPostmanも参照してください。