m moji kit v1.0.9
変換 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 を整形・圧縮・キーソートします。