コードは JSON、表計算は CSV と Excel を話します。遅かれ早かれ、データをこの間で移す必要が出てきます。3 つの形式は同じ行と列を持っています——コツは、変換で壊さないことです。その方法を紹介します。
クォートの規則は説明より実物で。
[{"name":"Ada","dept":"R&D","hours":7.5},{"name":"Bo","dept":"Sales, EU","hours":8}]を JSON → CSV 変換に通すと、こう返ってきました。name,dept,hours Ada,R&D,7.5 Bo,"Sales, EU",8最後の行を見てください。
R&Dはそのままですが、Sales, EUには二重引用符が付きます。値の中に区切り文字そのものが含まれているからです。手書きの CSV 出力が壊れる原因はたいていこの 1 点で、値の中のカンマが 1 列を静かに 2 列に変えてしまいます。入力をコピーすればご自身で確認できます。
各形式の用途
- JSON——コードや API のための構造化データ。表形式では通常オブジェクトの配列:
[{"name":"Ann","age":30}, …]で、各オブジェクトが 1 行です。 - CSV——プレーンテキストの表(カンマ区切り)。汎用的で軽く、ほぼ何にでも取り込めます。
- Excel(.xlsx)——書式・複数シート・数式を持つバイナリの表計算。多くの同僚が実際に開くのはこれです。
JSON → CSV
最も変換しやすいのはフラットなオブジェクトの配列です。各オブジェクトが 1 行になり、キーがヘッダー行になります。入れ子のオブジェクトは平面の表にきれいに対応しないので、先に平坦化してください(または最上位だけが変換されると考えてください)。
ヘッダー行の出どころにも注目してください。私たちの変換器が出した name,dept,hours は、最初のオブジェクトのキーを読んだ結果で、全レコードを走査した結果ではありません。2 番目のレコードに余分なキーがあれば、そのキーには行き場がありません。これが「平坦化と正規化はエクスポートの前に行う」実務的な理由です。
JSON → Excel
考え方は同じですが、出力は Excel・Numbers・Google スプレッドシートで直接開ける .xlsx です——取り込み手順は不要。表計算中心の人にデータを渡すときに最適です。
CSV・Excel → JSON
逆方向では、表計算をコードが解析できるオブジェクトの配列に変えます——DB への投入、API への供給、テストデータの読み込みに便利です。
入れ子 JSON の平坦化
CSV と Excel は平らな表なので、入れ子は先に展開します。慣例はキーをドット記法にすることです:
[{ "name": "Ann", "address": { "city": "Berlin", "zip": "10115" } }]
これは name・address.city・address.zip の 3 列を持つ表になります。配列は厄介です:値の並びは 1 つのセルに連結されがち("red; green")で、オブジェクトの並びは通常 1 件 1 行が必要です。列を揃えるため、変換前に形を決めておきましょう。
区切り文字・引用符・エンコーディング
CSV のトラブルの多くは 3 点に集約されます:
- 区切り文字。「カンマ区切り」は万国共通ではありません。多くの欧州ロケールではカンマが小数点なので、Excel は代わりにセミコロンを期待します。列が分かれないなら区切り文字を変えましょう。
- 引用符。 区切り文字・引用符・改行を含む値は二重引用符で囲み、内側の引用符は二重にします:
"She said ""hi"""。 - エンコーディング。 UTF-8 で保存を。Excel はアクセント付きや日本語などを正しく表示するのに **BOM(バイト順マーク)**を必要とすることが多く、無いと
éのような文字化けになります。
引用符は CSV が往復に耐えるかを決める部分で、入力 1 つで決着します。私たちのJSON ↔ CSV/Excel 変換ツールに、一方の値にカンマ、もう一方に & を含む 2 レコードを渡しました:
[{"name":"Ada","dept":"R&D","hours":7.5},{"name":"Bo","dept":"Sales, EU","hours":8}]
返ってきたのは
name,dept,hours
Ada,R&D,7.5
Bo,"Sales, EU",8
引用符が付いたのは Sales, EU だけで、R&D には付きません。規則はこれだけです —— 区切り記号、引用符、改行のいずれかを含むときだけ引用し、それ以外は裸のまま。すべてを引用する変換器も妥当な CSV を出しますが、ファイルは倍になり、生の文字列を比較する素朴なパーサーを壊します。何も引用しない変換器は、2 レコードを黙って 3 列に変えてしまいます。
なぜ Excel は数値を壊すのか
CSV を Excel で開くと、00123 のような ID は先頭の 0 が消え、注文番号のような長い数字列は指数表記(1.23E+11)になり、日付に見えるものは「気を利かせて」書式変更されます。これはデータの不具合ではなく Excel の表示変換です。保持するには、貼り付け前に列を文字列書式にするか、「データ → テキストまたは CSV から」で取り込み、その列を文字列に指定します。変換前に よくある JSON エラーで検証し、余分なカンマ 1 つで変換全体が崩れないようにしましょう。
ブラウザ内で、アップロードなし
データファイルには機微な情報が含まれることが多く、アップロードするツールはリスクです。以下はすべて端末内で動作します。
- JSON ⇄ CSV ⇄ Excel 変換——JSON か CSV を貼り付け、または .xlsx をアップロードして三者間で変換。
- JSON 整形——先に JSON を整えて検証すると、変換が予測どおりになります。
きれいに変換するコツ
- JSON をキーが揃ったオブジェクトの配列にする——列と 1:1 で対応します。
- 先に JSON を検証する(カンマ 1 つで壊れます)。
- Excel では出力が本物の
.xlsxであることを忘れずに(CSV のリネームではありません)。
「オブジェクトの配列」という形を押さえれば、JSON・CSV・Excel 間の移動は 2 クリック・アップロード不要の作業になります。