SS ツールボックス
SS ツールボックス
すべてのデータはローカルで処理されます

Excel・ヘッダー行・ネストに対応した CSV ⇄ JSON 変換

Excel などで書き出した CSV を JSON 配列に、JSON を CSV にブラウザ上で変換します。1 行目がオブジェクトのキーになり、ネストしたオブジェクトはドット記法の列、配列は 1 セル内の JSON 文字列として扱われます。

この CSV ⇄ JSON 変換ツールの実際の動作

  1. 1 行目は必ずヘッダー

    CSV → JSON は 1 行目をフィールド名にし、2 行目以降を 1 行 1 オブジェクトにします。ヘッダーのないファイルでは先頭データ行が列名として消費され、ヘッダーのみなら空配列を返します。

  2. ネストはドット記法の列へ

    JSON → CSV は meta.x / meta.y のような列を出力し、その CSV を戻すとネストしたオブジェクトに再構築されます。単純な構造は往復できます。

  3. 配列はセル内の JSON 文字列

    配列やオブジェクトの配列は [1,2,3] のような文字列として 1 セルに収まり、表は矩形のままです。CSV → JSON では JSON らしいセルを配列やオブジェクトに戻します。

  4. 数値は推測で、元の型は保証されない

    数値セルは数値になります(1.50 → 1.5、1e5 → 100000)。007 のような先頭ゼロは文字列のままですが、2^53 を超える ID は精度を失い、+4 は数値として扱われません。

  5. ブラウザ内で完結、アップロードなし

    .csv / .json を選択または貼り付け、結果をコピー・ダウンロードできます。変換は同期的に実行されるため、巨大なファイルではタブが固まります。

CSV ⇄ JSON 変換のよくある質問

CSV にヘッダー行は必要ですか?

必要です。最初の非空行がヘッダーになり、以降の各行が 1 つの JSON オブジェクトになります。ヘッダーがないファイルでは先頭データ行が列名として消費されます。ヘッダーのみのファイルは空配列を返します。

電話番号や郵便番号、注文 ID を文字列のまま保つには?

007 のような先頭ゼロは自動で文字列として残りますが、1.0 は 1、1e5 は 100000 になり、2^53 を超える整数は桁が失われます。「全列を文字列で読む」切替はないため、元ファイル側で引用符を付けるか事前に整形してください。

ネストしたオブジェクトと配列はどう表現されますか?

JSON → CSV は user.name のようなドット記法の列に展開し、配列はセル内の JSON 文字列として保存します。CSV → JSON はドット記法の列をオブジェクトに戻し、JSON らしいセルを解析します。ドットを含むキーは a\.b と書かれ、分割されません。

空値、引用符、改行、区切り文字はどうなりますか?

空セルは空文字列になります。カンマ、引用符、改行は書き出し時に引用され、戻すと正しく復元されます。空行は先頭列だけ埋まった不完全なオブジェクトになり、ヘッダー数を超えるセルは捨てられるか位置がずれます。区切りはカンマのみで、セミコロンやタブのファイルは 1 列として読まれます。

Excel の CSV は \r\n と BOM 付きで、なぜ壊れますか?

パーサーは LF のみで分割するため、CRLF ファイルでは最後のヘッダー名に \r が残り、CRLF を含む引用フィールドが残りのファイルを 1 セルに飲み込むことがあります。UTF-8 BOM も最初のヘッダーキーに付着します。変換前に UTF-8(BOM なし)・LF で保存し直してください。

区切り文字は変更できますか?

できません。区切り文字、引用符、エンコーディングのオプションはなく、カンマ区切りのみ解析します。セミコロンやタブ区切りは 1 列になり、行全体がキーになります。必要なら先にカンマ CSV へ変換してください。

CSV → JSON → CSV は無劣化の往復ですか?

保証されません。列順は保たれますが、型推測、ドット記法への展開、配列の JSON 文字列化、欠けたキーのリテラル出力でデータが変わることがあります。null は null、欠けたキーは undefined という文字列で出力されます。日付らしい値は常に普通の文字列で、JSON エディタでは Date オブジェクトを作れないため日付整形は行われません。書き出し前にオブジェクトの形を揃えてください。

関連ツール
SponsorMindElixir