CSVからJSONへの変換 — 開発者のための実践ガイド

CSVデータをJSONに変換する方法、各フォーマットの使用場面、区切り文字データの作業で開発者が陥りやすいよくあるミス。

CSV(カンマ区切り値)とJSON(JavaScriptオブジェクト表記法)は、最も広く使われているデータ交換フォーマットの2つです。CSVは最小限のオーバーヘッドでテーブルデータに優れ、JSONは階層的でネストされたデータを簡単に処理します。

なぜCSVをJSONに変換するのか?

CSVファイルはコンパクトで、スプレッドシート、データベース、ログから簡単に生成できます。しかしCSVには重要な制限があります:型の標準がなく(すべて文字列)、ネストされた構造をサポートせず、特殊文字の処理が曖昧です。JSONは这些问题を解決します。

よくあるシナリオには、スプレッドシートデータをWebアプリケーションに移行する、API使用のためにデータベースエクスポートを変換する、D3.jsやChart.jsなどの可視化ライブラリ用にデータを前処理する、構造化された入力を期待する機械学習パイプラインにデータを供給することが含まれます。

基本的な変換

最も単純なCSVからJSONへの変換では、最初の行をヘッダーとして扱います:

名前,年齢,都市Alice,30,東京Bob,25,大阪

次のように変換されます:

[  { "名前": "Alice", "年齢": 30, "都市": "東京" },  { "名前": "Bob", "年齢": 25, "都市": "大阪" }]

注意:年齢は文字列ではなく数値になっています。CSVには型情報がないため、良いコンバーターは変換中に型を推論する必要があります。CSV to JSON Converterはこれを自動的に処理します。

区切り文字の処理

カンマはデフォルトの区切り文字ですが、CSVファイルではセミコロン、タブ、パイプが頻繁に使用されます — 特にカンマが小数点区切りのヨーロッパのロケールでは。

  • カスタム区切り文字 — タブ区切り値(TSV)は\tを使用
  • 引用符で囲まれたフィールド — フィールドが区切り文字を含む場合:"東京, 日本"
  • エスケープされた引用符 — 引用符で囲まれたフィールド内の引用符は二重になる
  • フィールド内の改行 — 引用符で囲まれたフィールドは複数行にまたがる可能性がある

カンマで単純に分割しようとしないでください — 適切なCSVパースライブラリを使用してください。

型の強制変換

CSVは42(数値)と"42"(文字列)を区別しないため、型推論の戦略が必要です:

function coerce(value) {  if (value === '') return null;  if (value === 'true') return true;  if (value === 'false') return false;  if (/^-?\d+(\.\d+)?$/.test(value)) return Number(value);  return value;}

ネストされたデータの処理

CSVは設計上フラットです。ネストされた構造がある場合、2つの主な戦略があります:ヘッダーのドット表記(address.city)とブラケット表記(tags[0]、tags[1])。良いコンバーターはこれらを適切なJSONオブジェクトと配列に展開します。

よくあるミス

  • 文字エンコーディング — CSVファイルはUTF-8、Latin-1、Windows-1252の可能性があります。
  • 不一致な行の長さ — 一部の行にはヘッダーより少ない列がある場合があります。
  • ヘッダーなしのCSV — すべてのCSVファイルにヘッダーがあるわけではありません。
  • 大きなファイル — 2GBのCSVをメモリにロードしないでください。ストリーミングパーサーを使用してください。
  • BOM(バイト順序マーク) — 一部のCSVファイルはUTF-8 BOMで始まり、ヘッダー解析を壊す可能性があります。

試してみる

CSVデータをJSONに素早く変換する必要がある場合は、ブラウザで変換が行われるローカルツールを使用してください — データはアップロードされません。

Frequently asked questions

CSVとJSONの違いは何ですか?
CSV(カンマ区切り値)は、各行が行で値がカンマで区切られるフラットなテーブル形式です。JSON(JavaScriptオブジェクト表記)は、ネストされたオブジェクト、配列、型付き値をサポートする階層形式です。
ネストされたJSON値を含むCSVをCSVに戻すことはできますか?
直接的にはできません。CSVはフラットな形式であり、ネストされた構造を表現できません。
値の中にカンマを含むCSVファイルを処理するにはどうすればよいですか?
カンマを含む値は二重引用符で囲む必要があります。例如:"Smith, John",30
APIキーを含むCSVデータをオンラインで変換するのは安全ですか?
コンバーターがブラウザで完全に実行される場合のみ安全です。