変換 JSON → CSV
JSON を CSV に変換する
JSON 配列のオブジェクトを CSV テーブルに変換する方法と注意点をまとめています。Excel・Google Sheets で開ける形式に整えます。
解説
JSON 配列の各オブジェクトを CSV の 1 行に対応させます。1 行目に全オブジェクトのキー、2 行目以降に値を出力します。 注意点は、全行のキーが揃わない場合は欠損を空セルにする、値にカンマ・改行・ダブルクォートが含まれるなら " で囲んで内部の " を "" にエスケープする (RFC 4180)、ネストしたオブジェクトや配列はドット記法 (例: address.city) で平坦化するか JSON.stringify で 1 セルに入れる、Excel で開くなら BOM 付き UTF-8 で出力する、の 4 つです。
サンプル入力(JSON)
[
{"id": 1, "name": "alice", "score": 90},
{"id": 2, "name": "bob", "score": 85},
{"id": 3, "name": "carol", "score": 92}
] サンプル出力(CSV)
id,name,score
1,alice,90
2,bob,85
3,carol,92 使うときのコツ
- · ネストオブジェクトはドット記法(user.name)で平坦化するか、JSON.stringify で 1 セルに格納する
- · Excel で開く想定なら BOM 付き UTF-8 で出力し、日付っぽい文字列は先頭にシングルクォートを入れて文字列扱いを強制
- · 数値・真偽値はクォートで囲わず、文字列のみ必要に応じてクォート(RFC 4180)
よくある質問
▶ 値にカンマや改行が含まれる場合は?
ダブルクォートで囲んでください。内部のダブルクォートは二重にして "" のように記述します。RFC 4180 の標準ルールです。
▶ JSON のネスト構造はどう扱う?
CSV はフラットな表形式なので、ネストはそのまま表現できません。ドット記法でキーを平坦化(user.name → 列名 user.name)するか、JSON.stringify で 1 セル内に詰め込みます。
▶ Excel で開いたら文字化けします
Excel は UTF-8 を自動検出しないので、ファイル先頭に BOM (0xEF 0xBB 0xBF) を付けるか、Excel から「データ → テキストインポート → UTF-8」で取り込んでください。
▶ 全オブジェクトのキーが揃っていなくても変換できる?
可能です。全行のキーの和集合をヘッダーとし、欠損キーは空セルにします。jq では `[.[] | keys] | add | unique` で和集合キーを得られます。
▶ ヘッダー行を出さない CSV にできますか?
用途次第です。一般には可読性のためヘッダー行を出します。データベース投入用などで不要なら、ヘッダー行を取り除いて配信します。
▶ CLI で変換する方法は?
jq を使うのが手軽です。例: `jq -r '(.[0] | keys_unsorted) as $h | $h, (.[] | [.[$h[]]]) | @csv' input.json` でヘッダー込み CSV が出ます。
関連ツール
JSON フォーマッタ
JSON を整形・圧縮・キーソートします。