JSON フラット化・復元
フラット化または復元を選び、対応する入力を貼り付けます。入れ子に戻すときは数値キーと重複するパスに注意してください。
ブラウザ内でローカルに実行
フラット化または復元を選び、対応する入力を貼り付けます。入れ子に戻すときは数値キーと重複するパスに注意してください。
ブラウザ内でローカルに実行
JSON を貼り付け、[フラット化]または[フラット化解除]を選んで[実行]を押します。フラット化は各末端の値を user.profile.roles.0 のようなパスに変え、フラット化解除はパスの平らなオブジェクトから入れ子の文書を組み直します。区切り文字はドットまたはスラッシュで、区切り文字を含むキーはバックスラッシュでエスケープされるため、user.profile.roles.0 と文字どおりのキー「a.b」は区別されたままになります。
処理はすべてページ内の JavaScript で完結し、送信は行われません。結果はコピーするか、kivtools-json-flatten.json / kivtools-json-unflatten.json としてダウンロードできます。
値は型を変えずにコピーされます。文字列は文字列のまま、数値は数値のまま、null は null のままです。JavaScript で危険に見えるキー — __proto__、constructor、prototype — もここでは通常のデータキーです。プロトタイプを持たないオブジェクトを組み立てるため、{"__proto__": 1} をフラット化すると「__proto__」パスが残り、復元すると同じキーに戻ります。
空のオブジェクトと配列は既定で保持されます。[空のオブジェクトと配列を保持]をオフにすると破棄され、破棄したコンテナ数が指標に表示されます({"keep":{},"drop":[],"value":1} なら 2)。
フラット化解除が配列を組み直すのは、ノードが 0…n-1 の連続した数値キーだけを持つ場合です。これは実際の配列をフラット化したときの形です。0 と 2 のような飛び番や、0・1・x が混在するノードはオブジェクトのキーのまま残るため、キーが失われることも null の穴が生まれることもありません。
同じキーを二つの形で要求するパスは、黙って上書きせずに報告されます。平らなオブジェクト {"a":1,"a.b":2} は「パス「a.b」は先のキーと競合しています。」と応答し、以前の出力は消去されるので古い結果を新しい実行結果と取り違えることはありません。
フラット化は文書を反復処理でたどるため、20,000 段の入れ子でもスタックオーバーフローせず 1 本のパスになります。そのような文書の復元はブラウザーの JSON 書き出し限界に達し、そのときは生のエンジンエラーではなくローカライズされた「入れ子が深すぎる」メッセージを表示します。
JSON の構文エラーは、ローカライズされた前置きの後にエンジンの位置情報(例: line 1 column 9)を残します。これは不正な貼り付けを修正するために必要な情報です。ダウンロード名はモードに応じて kivtools-json-flatten.json または kivtools-json-unflatten.json になります。