JSON を CSV に変換:オブジェクト配列をフラット化

JSON のオブジェクト配列は CSV テーブルにマッピングされます — 1 オブジェクト 1 行、列はキーの和集合。実際の作業はクオートとネスト値の扱いに集中します。

「オブジェクト配列」の形

CSV は平らなテーブルなので、きれいに変換できる JSON はオブジェクトの配列です:各オブジェクトが 1 行、各キーが 1 列になります。

ヘッダを組み立てる

最初のオブジェクトのキーだけでなく、全オブジェクトのキーの和集合をヘッダにしてください。そうすれば余分なキーや欠けたキーがあるレコードでも揃います。欠けたセルは空欄のままです。

クォートの規則

カンマ・ダブルクォート・改行を含む値は必ずダブルクォートで囲み、内部のダブルクォートは二重にしてください。さもないと列がずれます。

ネストした値

オブジェクトや配列には平らな CSV 表現がありません。セル内に JSON テキストとして書く(可逆)か、address.city のようにドット区切りの列に平坦化してください。

ヘッダの順序と安定性

キーの和集合をソートするか、最初のレコードのキー順に固定して追加キーを末尾に並べてください。安定したヘッダ順は、複数回のエクスポート間の diff を有意にし、毎回列が入れ替わるのを防ぎます。

日付と数値のフォーマット

スプレッドシートは値を積極的に解釈し直します:長い数値 ID は精度を失い、ISO 日付はフォーマットを変えられ、先頭ゼロは消えます。値を完全に往復させたいなら、クォートで囲み、Excel に貼るときは先頭にシングルクォートを付けてください。

Excel と Google Sheets の互換性

Excel に Unicode を認識させたいときは、CRLF 改行と BOM 付きの UTF-8(byte-order mark)を使います。Google Sheets では BOM は任意ですが、カンマ区切りとダブルクォートのエスケープは同じく適用されます。

CSV から JSON へ戻す

行はクォートを認識した分割でパースし(カンマで雑に split しない)、先頭行をフィールド名として使い、列ごとに数値・真偽値・ISO 日付への型変換を試みます。本ツールでの往復は、列がすべて数値でなければ文字列は文字列のままにします。

よくある落とし穴

下記が CSV エクスポートを壊しがちな問題です。

  • 文字列値の中でエスケープされていないカンマ
  • クォートで囲まれていないセル内の改行
  • UTF-8 と Latin-1 が混ざって生まれる文字化け
  • 大きな整数(ID 等)がスプレッドシートで暗黙に丸められる
  • 真偽値が TRUE/FALSE ではなく文字列 "true"/"false" として保存される