CSVの各行をJSONオブジェクトとして変換
CSVの各行を名前付きプロパティを持つ独立したJSONオブジェクトに変換する方法。マッピングロジック、エッジケース、オブジェクト形式と配列形式の選択基準を解説。
Basic Conversion
詳細な説明
CSVの行をJSONオブジェクトにマッピング
CSVをJSONに変換する際、通常は各行をJSONオブジェクトにしたいと考えます。キーはヘッダーから、値は各カラムの値から取得されます。これが最も一般的で有用な出力形式です。
マッピングロジック
nカラムとmデータ行のCSVから、m個のオブジェクト(各nプロパティ)の配列が生成されます。
JavaScriptでの実装
function csvToJsonObjects(csv) {
const lines = csv.trim().split("\n");
const headers = lines[0].split(",").map(h => h.trim());
return lines.slice(1).map(line => {
const values = line.split(",");
const obj = {};
headers.forEach((key, i) => {
obj[key] = values[i]?.trim() ?? "";
});
return obj;
});
}
オブジェクト形式 vs 配列の配列
| 形式 | 利点 | 欠点 |
|---|---|---|
| オブジェクトの配列 | 自己文書化、キーで検索しやすい | 出力が大きい、キー名が繰り返される |
| 配列の配列 | コンパクト、カラム順序を保持 | 別途ヘッダーメタデータが必要 |
APIで消費される、ドキュメントデータベースに保存される、フィールド名でアクセスするコードで処理される場合はオブジェクトを選択します。
エッジケース
- ヘッダーより短い行: 欠損値は
""またはnullにデフォルト設定 - ヘッダーより長い行: 余分な値は通常破棄される
- 完全に空の行: 空のオブジェクトを避けるためスキップする
ユースケース
ユーザーがCSVの連絡先リストをアップロードし、バックエンドが各行を個別の連絡先JSONオブジェクトとして処理するCRMアプリケーションのデータインポート機能を構築する場合に使用します。