本文へスキップ
にゃんこツール

JSONキーソート・フラット化

JSONのキーを並べ替えたり、ネストを a.b[0] 形式の1階層に変換(flatten)して元の構造に戻したり(unflatten)できます。JSON差分の前処理にも便利です。整形だけならば JSON整形、差分確認は JSON差分比較 をご利用ください。

🔒 ブラウザ内で完結・入力データはサーバーに送信されません

使い方

  1. 「モード」でキーソート・フラット化・復元のいずれかを選びます。
  2. キーソートでは並び順と再帰の有無を選び、「入力」欄にJSONを貼り付けます。
  3. 「結果」欄に変換後の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" のように配列とオブジェクトが混在する場合は、一意に復元できないためエラーにしています。

このページをシェア

↑↓ 選択 Enter 開く Esc 閉じる