JSONとCSVの違い
表計算ソフト、一括インポート、列指向ツールに向かう、フラットな行状のデータにはCSVを選びます――ストリーミングが安価で、どこでも開けます。レコードがネストする、型が重要、プログラムがペイロードを消費する、という場合にはJSONを選びます。CSVはテーブルでありJSONはツリーです。変換が必要になるのはデータではなく、消費者が変わったときです。
JSONとCSVの違いとは
CSVは、現実の世界からデータが届くときの形式です。表計算ソフトのエクスポート、銀行明細、センサーのダンプ、CRMのダウンロード。ごく単純に見えます――値をカンマで区切るだけ――そしてその一見の単純さこそ、扱いを誤られがちな理由です。RFC 4180は正確なクォートの規律を定めていますが、実際のファイルの多くは緩く従うだけで、方言はそこから増えていきます。対照的にJSONは、プログラム同士がやり取りする形式です。小さな文法1つ、型は6種類、ネストはデータが必要なだけ深くできます。
本質的な違いは形状です。CSVファイルは2次元のテーブルです。列からなる行、セルには値が1つ、そしてすべてがテキストです。JSONドキュメントはツリーです。オブジェクトの中に配列、その中にさらにオブジェクトがあり、各値が自分の型を持ちます。どちらが優れているという話ではありません。答える質問が違うのです。しかし変換の苦しみの大半――ひどく壊れた変換の大半――は、ツリーをテーブルに押し込めるか、テーブルに存在しない構造があるかのように扱うことから生まれます。
このページでは、意思決定が実際に行われる場面で両者を比較します。構造、型付けとクォート、Excelの挙動、大量データとストリーミングです。両方向のコンバーターを下にリンクしてあり、完全にブラウザ内で動作します。フラット化と型推論の規則は、隠さずにドキュメント化されています。
APIレスポンスをアナリストが開ける形に変えるのは、定番の渡りです。JSONからCSVへの変換ツールは、レコードの配列を1回の貼り付けで列にフラット化します。処理はすべてブラウザ内で行われます。
ベンダーの表計算ソフトのエクスポートをコードに取り込むときは?CSVからJSONへの変換ツールが、ファイルがパーサーに届く前にローカルで型と構造を付与します。
形状:1つのテーブルとツリー
CSVファイルはレコードの並びで、各レコードは同じ幅です。名前、メールアドレス、金額が全行で繰り返されます。ヘッダー行――慣例であって保証ではない――が、ファイル全体に対して1度だけ列に名前を付けます。JSONのレコードは代わりにキーを自分で持ち、すべてのオブジェクトが自己記述的です。オブジェクトが、配列を持つオブジェクトの配列を保持することもあります。この非対称性は、どんな機能一覧よりも強く形式の選択を決めます。
| 項目 | JSON | CSV |
|---|---|---|
| 形状 | ツリー――オブジェクトと配列は自由にネストする | 行と列からなる1枚のフラットなテーブル |
| 型 | 6種類。構文で宣言される | なし――すべてのセルはテキスト |
| キー | オブジェクトがそれぞれ自分で持つ | 慣例として1つのヘッダー行 |
| ネスト | 深さは無制限 | フラット化するか複数ファイルにしない限り不可能 |
| 標準 | RFC 8259。文法は1つ | RFC 4180。加えて現実に残り続ける方言 |
| 空の値 | null。意図して宣言する | 空セル――または列そのものが欠落 |
型とクォート:宣言と推論
JSONでは値の型が見えます。クォートは文字列、素の数字は数値、true、false、nullは正確なトークンです。CSVではファイルは何も主張しません。007も7もただのセルのテキストで、消費者ごとにそれぞれの規則で型を推し直します。RFC 4180はクォートだけは正確に定めています。カンマ、ダブルクォート、改行を含むフィールドはダブルクォートで囲み、埋め込まれたクォートは2重にする、と。これを省いたファイルは、データエンジニアなら誰もがデバッグしてきた定番の行崩れバグを生みます。
この型の再推論の段階で、データは静かに壊れます。郵便番号の02134は数値2134になり、1.20は1.2になり、長い口座番号は4.2E+12になります。JSONには鏡写しの規則があります――数値は先頭ゼロを一切持てないため、郵便番号はJSONでも文字列にするしかない――それでも宣言が明示的で、他人の表計算ソフトによる推測ではないだけましです。
Excel、大量データ、それぞれの勝ちどころ
Excelの挙動には独立した段落が与えられます。あまりに多くのパイプラインを焼き尽くすからです。ExcelはCSVをネイティブに開きますが、各セルをマシンのロケールで型付けし直します。先頭ゼロは消え、ISOのタイムスタンプはロケール依存の日付に化け、ヨーロッパの多くの地域ではカンマが小数点記号であるためセミコロン方言が支配します。保存すると、それらの推論を焼き込んだままファイルが書き直されます。JSONはExcelを通りません。それだけでも、統合がJSONを好む理由になります。
規模が大きくなると、CSVのフラットさは長所になります。行は定数メモリで1行ずつ解析でき、マルチギガバイトのエクスポートや列指向ツールが今もまずCSVを扱うのはこのためです。JSONが勝るのは、消費者がプログラムで、構造が本物の場所です。APIのペイロード、設定、ネストしたドキュメント。流行ではなく消費者で選べば、議論の大半は1文で決着します。
どちらをいつ選ぶか――変換はどう振る舞うか
宛先が表形式ならCSVです。表計算ソフト、データベースへの一括ロード、BIやデータサイエンスのツール。構造がネストするか、消費者がコードならJSONです。実際のパイプラインでは指針は絶えず入れ替わります。APIはJSONを返し、アナリストはCSVを欲しがり、ベンダーはサービスに取り込まねばならないCSVを送ってくる――変換は移行プロジェクトではなく、日々のメンテナンスです。
変換には正直な限界があります。JSONからCSVへの変換はフラット化が必須です。オブジェクトの配列は行になり、キーの和集合が列になり、ネストした配列やオブジェクトは文字列化、連結、破棄のいずれかしかありません。CSVからJSONへの変換は推論が必須です。空セルはnullか空文字列になり、数値に見えるセルは数値になります。このサイトのコンバーターは、沈黙のうちに推測するのではなく、その規則をそのままドキュメントにしています。
よくある質問
CSVはJSONのようにネストしたデータを保持できますか?
できません――RFC 4180にネストの概念はなく、セルはセルです。回避策は3つです。フラット化する(address_cityを列名にする)、クォートしたセルの中にJSON断片をシリアライズする、キーで結合する複数ファイルに分割する。JSON Lines――1行に1つのフラットなJSONオブジェクト――は、レコード状データの定番の中間地点です。
CSVを開くと、Excelは値を勝手に変えてしまうのはなぜですか?
Excelは読み込み時にすべてのセルの型を推し直します。02134は先頭ゼロを失い、16桁の口座番号は1.23457E+12になり、2026-09-19はロケール依存の日付になります。それらの推論はファイルに書き戻されます。列をテキストに強制してExcelのテキストインポートウィザードから読み込めば、この被害は避けられます。プログラムが解析するJSONは、何の型付けもし直しません。
JSONとCSVの変換ツールはファイルをアップロードしますか?
いいえ。解析、フラット化、クォートはすべてブラウザのタブの中で行われます。アップロードのエンドポイントはなく、サイトのContent-Security-Policyは自分自身へのネットワークリクエストしか許可しません。変換中にDevToolsのNetworkパネルを見れば確認できます――何もタブの外に出ません。ローカルで動くツールの要点はそこです。
CSVは本当の意味での標準ですか?
CSVの中核はRFC 4180です。CRLFの改行、カンマ区切り、埋め込みクォートの2重化、そして標準自体が「よくある」と明記するオプションのヘッダー行。それでも現実の方言は残ります――ヨーロッパの多くの地域のセミコロン区切り、タブ区切りの変種、BOMの有無を含めて不統一なエンコーディング。JSONの1ページの文法は、方言の余地がはるかに少ないままです。
非常に大きなファイルの処理に向いているのはどちらの形式ですか?
たいていはCSVです。行は定数メモリで1行ずつ解析して捨てられるため、ファイルサイズがストリーミングリーダーに負担をかけることはほとんどありません。JSONは通常、使う前にドキュメント全体を解析するため、メモリはサイズに比例してかかります――ストリーミングJSONパーサーもありますが、標準ではありません。巨大なフラットなエクスポートならCSVのまま、巨大なネストしたデータならJSON Linesを検討してください。
JSONからCSVへの変換では、列はどのように決まりますか?
レコードを走査し、キーの和集合を、最初に現れた順にヘッダー行として採用します。キーを欠くレコードには空セルが入ります。ネストしたオブジェクトや配列は列に収まらないため、コンバーターは文字列化するか連結するしかありません――このサイトのコンバーターは、その選択を驚きとして委ねるのではなく、ドキュメントに明示しています。