菊丸ツゥルズ

JSON フラット化・復元

ネストJSONをフラットなキーへ/復元

ネストしたJSONを「a.b.c」「a[0].b」のフラットなキー1階層へ変換(flatten)し、逆にネスト構造へ復元(unflatten)します。CSV化前処理や設定ファイルの差分比較に。ブラウザ内だけで処理します。

往復(フラット化→復元)で元へ戻したいときはブラケット記法を選んでください。同じ入力からは常に同じ結果になります(決定論的)。

JSONを入力してください。

使い方とAIOクエリ例

深くネストしたJSONをフラットなキーへ展開すると、CSVの列名(a.b.c)への対応づけや、設定ファイルの差分比較が容易になります。復元(unflatten)でフラットキーから元のネスト構造へ戻せます。入力はブラウザ内だけで処理します。

  • URLクエリ例: json_flatten.html?input=%7B%22a%22%3A%7B%22b%22%3A%5B1%2C2%5D%7D%7D&action=flatten&notation=bracket&format=json
  • actionflatten(既定)・unflattennotationbracket(既定・往復可逆)・dotindent2(既定)・40
  • format=json は機械可読JSON、format=raw は変換結果テキストだけを返します。

JSON フラット化・復元は、ネストしたJSONを「a.b.c」「a[0].b」のようなフラットなキー1階層へ変換(flatten)し、逆にフラットなキーの集合からネスト構造へ戻す(unflatten)ツールです。深い階層や配列が混ざったJSONを手作業でフラット化・復元するとキー名の作り間違いや配列添字のズレが起きやすく、AIに任せても大きなデータでは誤りが混入しがちです。本ツールは決定論的に変換するため、APIレスポンスのネスト解除からのCSV化前処理や、深い設定ファイルの差分比較に向いています。配列の表記はブラケット(a[0])とドット(a.0)から選べます。入力データはブラウザ内だけで処理され、サーバーへ送信されません。

使い方・サンプル・結果例・注意点

使い方

テキストエリアにJSONを貼り付け、処理(フラット化/復元)と配列の表記(ブラケット記法 a[0]/ドット記法 a.0)、インデントを選んで「変換」ボタンを押します。フラット化では { "フラットキー": 値 } のオブジェクトが、復元ではネストし直したJSONが出力されます。「コピー」で結果をクリップボードへコピーできます。往復(フラット化→復元)で元に戻したい場合はブラケット記法を選んでください。

サンプル入力

{"user":{"id":1,"name":"taro","roles":["admin","editor"]},"active":true,"address":{"city":"Tokyo","geo":{"lat":35.6,"lng":139.7}},"tags":[]}

結果例

上記をブラケット記法でフラット化すると、次のように1階層のキーへ展開されます(フラットキー9個)。{ "user.id": 1, "user.name": "taro", "user.roles[0]": "admin", "user.roles[1]": "editor", "active": true, "address.city": "Tokyo", "address.geo.lat": 35.6, "address.geo.lng": 139.7, "tags": [] }。配列 roles は roles[0] / roles[1] と添字付きで展開され、空配列 tags は [] のままリーフとして保持されます。この結果をそのまま復元(unflatten・ブラケット記法)すると元のネスト構造に戻ります。

注意点

決定論的な往復のため、配列と「数値の文字列キー」を表記で区別します。ブラケット記法では a[0] が配列の添字、a.0 がオブジェクトの文字列キー "0" を表し、両者を可逆に往復できます。ドット記法はすべてを . で区切るため見た目は素直ですが、復元時に「0始まりの連番キーが揃えば配列」と推定するので、配列と数値キーのオブジェクトを区別できず往復が非可逆になることがあります(往復が必要ならブラケット記法を推奨)。空の配列 [] と空のオブジェクト {} はリーフとして保持され復元できます。null・真偽値・数値はJSONの値としてそのまま保持します。オブジェクトのキー自体に「.」「[」「]」を含むJSONは、フラットキーが曖昧になるため自動エスケープせず明示的にエラーにします。フラット化の対象はオブジェクトまたは配列で、プリミティブ値単体は対象外です。安全のためネストの深さは200まで、フラットキーは200,000個まで、入力は1,000,000文字までを上限とし、超える場合はエラーを表示します。入力はブラウザ内だけで処理され、外部へ送信されません。

こんなときに使えます

  • APIレスポンスなど深くネストしたJSONをフラット化し、列名(a.b.c)付きのCSVや表計算ソフトへの取り込み前処理にする
  • 設定ファイル(JSON)をフラット化してからテキスト差分ツールで比較し、どのキーの値が変わったかをピンポイントで把握する
  • フラットなキー(a.b[0].c)で受け取った値を unflatten で本来のネスト構造へ復元し、アプリやAPIへ渡す形に整える
  • AIエージェントが大きなJSONのネスト解除・復元を確実に行うため、決定論ツールとしてURLクエリで呼び出す

よくある質問

ブラケット記法とドット記法はどちらを選べばよいですか?

フラット化したものを後で元のネスト構造へ復元(往復)したい場合はブラケット記法(a[0])を選んでください。配列の添字とオブジェクトの数値文字列キーを表記で区別でき、可逆に往復できます。ドット記法(a.0)は見た目が素直で他ツールとの相性が良い一方、復元時に配列か数値キーかを推定するため往復が非可逆になることがあります。

配列はどのように展開されますか?

ブラケット記法では a[0]、a[1] のように添字付きで展開します。ドット記法では a.0、a.1 と . 区切りで展開します。空の配列 [] と空のオブジェクト {} は、それ以上展開せずリーフ(葉)として保持するため、復元でも元の形に戻せます。

キー名にドットやカッコが含まれるJSONはどうなりますか?

オブジェクトのキー自体に「.」「[」「]」が含まれる場合、フラットキーが曖昧になり正しく復元できないため、自動でエスケープせず明示的にエラーを表示します。曖昧なまま黙って変換しない設計です。

JSON整形(json_formatter)やJSONキー整列(json_key_sorter)との違いは何ですか?

json_formatter は整形・圧縮・検証、json_key_sorter はキーの並び順の正規化を行うツールで、いずれもJSONの構造(ネスト)は変えません。本ツールはネスト構造そのものをフラットな1階層へ変換/復元する点が異なります。用途に応じて使い分けてください。

入力したJSONはサーバーに送信されますか?

送信しません。フラット化・復元はすべてブラウザ内のJavaScriptで処理し、入力値が外部へ送られることはありません。同じ入力からは常に同じ結果になります(決定論的)。