JSONフラット化の使いどころ — Redis・.env・設定ファイルへの応用
ネストしたJSONオブジェクトをキーのパスをドット区切りで連結したフラットな構造に変換することを「フラット化」と呼びます。フラットなJSONはRedisのハッシュフィールド・環境変数・CSVへの変換など、様々なデータパイプラインで扱いやすくなります。
Redisのハッシュフィールドへのマッピング
Redisのハッシュ(HSET)はフラットなキー/バリュー構造しか持てません。ネストしたJSONをフラット化することでHSET user:123 name.first Alice name.last Bob age 30のように構造を保ちながら格納できます。HGETALLで取得後アンフラットすれば元のネストJSONに戻せます。node-redisやioredisで実装する際にJSON Flattenerのロジックをそのまま利用できます。
環境変数としてのネストJSONの扱い
設定オブジェクトを環境変数に変換する場合、フラット化してキーを大文字にする変換が一般的です。例:{ "db": { "host": "localhost" } } → DB__HOST=localhostのようにダブルアンダースコアを区切り文字として使います。.NETのIConfigurationやSpring Bootはこの規則に対応しています。JSON Flattenerでフラットなキーリストを生成してから.env形式に手動変換すると効率的です。
JSONPathでネスト要素に直接アクセスする方法
フラット化せずにネストJSONを操作するには、JSONPath($.a.b.c)やJSON Pointer(/a/b/c)を使う方法があります。lodash.getでは_.get(obj, "a.b.c")でネスト値を安全に取得できます。optional chaining(obj?.a?.b?.c)はTypeScript/JavaScript 2020以降で使えます。フラット化が必要ないケースではこれらの手法の方が適しています。
配列のフラット化と注意点
配列を含むJSONをフラット化すると { "items.0": "a", "items.1": "b" } のようになります。アンフラット時に数値キーのみのオブジェクトを配列として復元するかどうかは実装によります。JSON Flattenerは数値キーを配列として復元します。ただし疎な配列(items.0とitems.5だけ存在など)はitems.3などの中間要素がundefinedになることに注意が必要です。