ShibaHubShibaHub
開発者向け

CSVとJSON、データ形式としての違いと変換が必要な場面

CSVの表形式とJSONの階層構造の違いと、それぞれがExcel・APIと相性が良い理由、変換が必要になる場面がわかります。

スプレッドシートで管理しているデータをAPIに送りたい、あるいはAPIから返ってきたデータをExcelで集計したい、といった場面で「CSV」と「JSON」というデータ形式の変換が必要になることがあります。この記事では、CSVとJSONがそれぞれどんな構造を表現するための形式なのか、その違いと変換が必要になる典型的な場面を解説します。

1. CSVの基本構造:1行1レコード、カンマ区切り

CSV(Comma-Separated Values)は、その名の通りカンマ(,)でデータを区切って表現するテキスト形式です。基本的な構造はシンプルで、1行が1件のレコード(データの単位)に対応し、各行の中で値がカンマ区切りで並びます。多くの場合、1行目はヘッダー行として、各列が何を表すかの項目名が記載されます。

この「行=レコード、列=項目」という構造は、Excelやスプレッドシートの表形式とそのまま対応しているため、CSVはこれらのツールと非常に親和性が高い形式です。

2. JSONの基本構造:階層構造(入れ子)を表現できる

JSON(JavaScript Object Notation)は、キーと値の組み合わせ(オブジェクト)や、値の並び(配列)を使ってデータを表現する形式です。CSVと大きく異なる点は、JSONは値の中にさらにオブジェクトや配列を入れる「階層構造(入れ子)」を表現できることです。

たとえば「1人のユーザーが複数の電話番号を持つ」「注文データの中に複数の商品情報がリストとして含まれる」といった、1件のデータの中に複数の要素や、さらに別の構造が含まれるケースは、表形式のCSVでは無理なく表現しづらいですが、JSONであれば自然に表現できます。

3. 「表形式」と「階層構造」、得意な場面の違い

形式構造親和性が高い場面
CSV表形式(行・列)Excel・スプレッドシートでの集計・管理
JSON階層構造(入れ子可)API通信・プログラムでのデータ処理

CSVは表形式のデータをそのまま表せるため、Excelやスプレッドシートとの相性が良く、人間が表として一覧で確認・編集する作業に向いています。一方JSONは、プログラミング言語のオブジェクトや配列とほぼそのまま対応する構造を持つため、APIのレスポンスやプログラム間でのデータのやり取りに広く使われています。

4. 変換が必要になる典型的な場面

  • スプレッドシートで管理している顧客データを、APIに送信するためJSON形式に変換したい
  • APIから取得したJSON形式のデータを、Excelで集計・グラフ化するためCSV形式に変換したい
  • 他システムからエクスポートされたCSVデータを、自社システムのJSON形式のAPIに取り込みたい
  • JSON形式のログデータを、関係者に共有するため表形式のCSVに変換して渡したい

このように、「人が表として見る・編集する場面ではCSV」「システム同士でデータをやり取りする場面ではJSON」という役割の違いから、双方向の変換が必要になる場面は実務上よくあります。CSV⇔JSON変換ツールを使えば、どちらの方向の変換も手元ですぐに行えます。

5. CSVでカンマや改行を含む値を扱う際の注意点

CSVはカンマで値を区切る形式であるため、値そのものにカンマが含まれる場合(住所や説明文など)は、そのままでは区切り位置が誤って解釈されてしまいます。このような場合、値全体をダブルクォート(")で囲むことで、その中のカンマは区切り文字ではなく値の一部として扱われます。同様に、値の中に改行を含めたい場合もダブルクォートで囲む必要があります。

こうしたCSVの書式についてはRFC4180という文書で標準的なルールが定義されており、多くのCSV処理ツールはこの仕様を参考に実装されています。ただし実際には、ソフトウェアによって改行コードや文字コードの扱いに細かな差があることもあるため、値にカンマ・改行・ダブルクォート自体が含まれるデータを扱う際は注意が必要です。

6. CSVの文字コード・文字化けに関する注意点

CSVファイルでよくあるトラブルが、日本語を含むデータの文字化けです。CSVファイル自体には文字コードを明示する仕組みがなく、作成時の文字コード(UTF-8、Shift-JISなど)と、開く側のソフトが想定する文字コードが一致していないと、文字が正しく表示されません。

特にExcelでUTF-8のCSVファイルを開くと文字化けすることがあるため、UTF-8で保存する際に「BOM付きUTF-8」という形式を使うと、Excelでも文字化けせずに開けることが多いとされています。CSVを扱う際は、作成元・利用先のソフトがどの文字コードを前提としているかを意識しておくと、文字化けのトラブルを避けやすくなります。

7. JSONの階層構造をCSVに変換するときの割り切り

JSONの入れ子構造をCSVに変換する場合、そのままでは表形式にはまらないため、ツールによって扱い方が分かれます。ネストしたオブジェクトのキーを「address.city」のようにドットでつなげて1つの列にする方法や、配列の要素をJSON文字列のまま1つのセルに詰め込む方法などが一般的です。どちらの方法でも、元のJSONが持っていた完全な階層構造をCSVだけで再現するのは難しいため、変換後にどのような列構成になったかを確認しておくことが大切です。

まとめ

CSVは「表形式」のデータをシンプルに表現する形式でExcelとの親和性が高く、JSONは「階層構造」を表現できる形式でAPIやプログラムとの親和性が高い、という違いがあります。それぞれ得意な場面が異なるため、データをやり取りする相手やツールに応じて変換が必要になります。手作業での変換が面倒な場合はCSV⇔JSON変換ツールをご活用ください。

この記事に関連する計算ツール
コラムをもっと見る計算ツールの背景知識をわかりやすく解説見る
広告広告枠レスポンシブ / 728 × 90