変換 CSV → JSON
CSV を JSON に変換する
CSV ファイルを JSON 配列に変換する方法です。引用符・エスケープ・改行・文字コードの扱い方を解説します。
解説
CSV の各行を JSON オブジェクトに変換し、配列にまとめます。1 行目をヘッダーとしてキーに使うのが定番です。 ダブルクォートで囲まれたフィールド内のカンマは区切り扱いにせず、内部の "" は 1 個の " に戻します (RFC 4180)。CSV はすべて文字列なので、数値や真偽値への型変換は後段に任せるほうが安全で、本ツールも文字列のまま保持します。クォート内の改行と行区切りの改行は区別が必要です。
サンプル入力(CSV)
id,name,score
1,alice,90
2,"o'brien, bob",85
3,carol,92 サンプル出力(JSON)
[
{"id": "1", "name": "alice", "score": "90"},
{"id": "2", "name": "o'brien, bob", "score": "85"},
{"id": "3", "name": "carol", "score": "92"}
] 使うときのコツ
- · ヘッダー行を持たない CSV では、自分でキー名(col1, col2 など)を割り当てる
- · 数値や真偽値に変換したい場合は CSV→JSON の段階ではなく、JSON 化後に型変換する方が安全(誤変換の防止)
- · BOM 付きの CSV はヘッダーの最初のキーに BOM 文字が混入しがち。先頭の \uFEFF を除去する
よくある質問
▶ TSV(タブ区切り)でも変換できますか?
セパレータをタブに変えれば同じ理屈で変換できます。CSV パーサのオプションで delimiter を指定するのが一般的です。
▶ 値の型を自動判定してほしい
「90」を文字列か数値か機械判定するのは曖昧さがあります。例えば「09」は ZIP コードかもしれず、数値化すると "9" になり情報損失します。明示的に型を指定する運用が安全です。
▶ ヘッダーがない CSV はどうする?
事前にヘッダー行を追加するか、変換時にキー名を指定します。Node.js の csv-parse なら columns: ['col1','col2','col3'] のように指定できます。
▶ 改行を含むセルはパースできる?
RFC 4180 準拠のパーサならクォートに囲まれた改行をフィールド内改行として扱えます。簡易な split('\n') では失敗するので、専用ライブラリを推奨します。
▶ 数 GB の CSV を変換したい
ブラウザでは 10MB を超えると重くなります。Node.js のストリーム処理(fast-csv / csv-parse)か、duckdb の `read_csv` が高速で安定します。
▶ セルが空の場合はどうなる?
空文字列 "" として JSON に出力されます。null や undefined にしたい場合は変換後に置換するロジックが必要です。
関連ツール
JSON フォーマッタ
JSON を整形・圧縮・キーソートします。