JSONキーソート・フラット化
JSONのキーを並べ替えたり、ネストを a.b[0] 形式の1階層に変換(flatten)して元の構造に戻したり(unflatten)できます。JSON差分の前処理にも便利です。整形だけならば JSON整形、差分確認は JSON差分比較 をご利用ください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
使い方
- 「モード」でキーソート・フラット化・復元のいずれかを選びます。
- キーソートでは並び順と再帰の有無を選び、「入力」欄にJSONを貼り付けます。
- 「結果」欄に変換後のJSONが表示されるので、「コピー」で取り出します。
注意事項
- 数値は入力の表記のまま出力するため、桁数の多い整数(例: 12345678901234567890)も丸められません。
- キーの並べ替えはUTF-16コード単位の辞書順です。10 は 2 より前に来ます。配列の要素順は変更しません。
- フラット化では、ドット・括弧・空白を含むキーや数字だけのキーは ["a.b"] のようにブラケット表記になります。復元時に ["0"] はオブジェクトのキー、[0] は配列の添字として扱います(a.0 はオブジェクトのキー "0")。
- 空の配列 [] と空のオブジェクト {} は値としてそのまま残ります。ルートがスカラーや空の場合はフラット化されません。
- 復元で飛んだ添字がある場合は null で埋めます(添字の上限は100000)。同じ JSON 内に同名キーがあると最後の値が使われます。
- 入力したJSONはブラウザ内で処理され、サーバーには送信されません。
用語解説
フラット化(flatten)
入れ子になったJSONを、a.b[0] のようなパスをキーにした1階層のオブジェクトに変換することです。環境変数や翻訳ファイル、CSVへの変換前処理でよく使われます。
復元(unflatten)
フラット化されたキー(a.b[0] 形式)を解釈して、元の入れ子構造に戻すことです。
プロトタイプ汚染
__proto__ などの特殊なキーを悪用して、オブジェクトの共通の性質を書き換える攻撃です。このツールは Map を使って処理するため影響を受けません。
よくある質問
キーをソートしても配列の順番は変わりますか?
変わりません。ソートの対象はオブジェクトのキーだけで、配列の要素の順序は常に保持されます。再帰オンのときは、配列の中にあるオブジェクトのキーも並べ替えます。
フラット化したキーに「.」が含まれているとどうなりますか?
ドット・括弧・空白を含むキーや空のキー、数字だけのキーは ["a.b"] のようなブラケット表記になり、復元すると元のキーに戻ります。a.b と ["a.b"] は別物として区別されます。
桁数の多い整数は丸められませんか?
丸められません。数値は入力の表記のまま出力します。ただし、このツールの結果を別のプログラムで読み込むとき、JavaScriptなどでは15〜17桁を超える整数が丸められる点には注意してください。
unflattenで「矛盾しています」と表示されるのはなぜですか?
"a": 1 と "a.b": 2 のように、同じ場所が値でもあり親でもある場合や、"a[0]" と "a.b" のように配列とオブジェクトが混在する場合は、一意に復元できないためエラーにしています。
このページをシェア
