なぜCSVをJSONに変換するのか
CSVは表データのフォーマットで、Excelのデフォルトエクスポート形式です。JSONはプログラムに優しいフォーマットで、API通信の標準です。CSVをJSONに変換することで、表データをプログラムが直接扱えるようになります。
よくあるユースケース:
- Excelデータをウェブサイトのデータベースにインポート
- 表データをAPIに連携
- データ分析の結果をフロントエンドに渡してレンダリング
- 設定をスプレッドシートからJSONファイルに移行
CSVとJSONの違い
CSVフォーマット
name,age,city
Tom,25,北京
Jerry,30,上海
- プレーンテキスト、カンマ区切り
- 最初の行がヘッダー
- 1行が1レコード
- 型なし(すべて文字列)
- ネスト構造なし
JSONフォーマット
[
{"name": "Tom", "age": 25, "city": "北京"},
{"name": "Jerry", "age": 30, "city": "上海"}
]
- 構造化、キーと値のペア
- 型あり(文字列、数値、ブール値)
- ネスト対応
- プログラムが直接解析可能
変換の原理
ヘッダーのマッピング
CSVの最初の行がヘッダーです。JSONに変換する時、ヘッダーがオブジェクトのキーになります:
- ヘッダー:name, age, city
- 最初のデータ行:Tom, 25, 北京
- 変換結果:{"name": "Tom", "age": "25", "city": "北京"}
データ型の認識
CSVのすべての値は文字列です。JSONに変換する時、型をスマートに認識できます:
- 数値:"25" → 25(数値)
- ブール値:"true" → true(ブール値)
- 空値:"" → null(null)
- 文字列:そのまま文字列
型認識しない場合はすべて文字列として扱われます。
配列の生成
CSVの各行が1つのオブジェクトになり、すべての行で配列を構成します:
[
{オブジェクト1},
{オブジェクト2}
]
ネスト構造
課題
CSVはフラットな表ですが、JSONはネストをサポートします。フラットなCSVをネストしたJSONに変換するには?
方法1:ドット記法
CSVヘッダーにドットを使って階層を表します:
name,address.city,address.zip
Tom,北京,100000
JSONに変換:
{
"name": "Tom",
"address": {
"city": "北京",
"zip": "100000"
}
}
方法2:配列インデックス
name,tags[0],tags[1]
Tom,A,B
JSONに変換:
{
"name": "Tom",
"tags": ["A", "B"]
}
方法3:セミコロン区切り
name,tags
Tom,"A;B;C"
JSONに変換:
{
"name": "Tom",
"tags": ["A", "B", "C"]
}
変換ステップ
1. CSVを準備
CSVフォーマットが正しいことを確認:
- 最初の行がヘッダー
- フィールドはカンマ区切り
- カンマを含むフィールドはダブルクォートで囲む
- フィールド内のダブルクォートは2つのダブルクォートでエスケープ
2. アップロードまたは貼り付け
CSVの内容を変換ツールに貼り付けるか、CSVファイルをアップロードします。
3. オプションの設定
- データ型を認識するかどうか
- ネスト構造の処理方法
- 出力フォーマット(配列か行ごとのオブジェクトか)
4. 変換
ツールが自動的に変換し、JSONを出力します。
5. バリデーション
JSONの結果が期待通りか確認:
- フィールドは正しいか
- 型は正しいか
- ネストは正しいか
よくある問題
カンマを含むフィールド
カンマを含むCSVフィールドはダブルクォートで囲む必要があります:
name,desc
Tom,"Hello, world"
囲まないと2つのフィールドとして扱われ、変換エラーになります。
文字化け
CSVはUTF-8エンコードを使用してください。ExcelのデフォルトはGBKの可能性があるため、エクスポート時にUTF-8を選択します。
空値の処理
CSVの空セルをJSONでは空文字列 "" にするか、null にするか?
- デフォルト:空文字列 ""
- スマート認識:null
- ツールのオプションによります
数値の精度
大きな数値はJSONに変換すると精度が失われる可能性があります。例えば18桁のID番号は、数値として扱うと科学表記になります。ID番号は文字列として扱う必要があります(CSVで先頭に引用符を付けるか、変換時に文字列型を指定)。
日付フォーマット
CSVの日付フォーマットは不統一です(2024-01-01、2024/1/1、Jan 1 2024)。JSONでは文字列のまま保持し、フロントエンドで解析します。
BOMヘッダー
ExcelからエクスポートしたCSVにBOMヘッダー(\uFEFF)が付く可能性があり、最初のフィールド名の前に不可視文字が入ります。変換ツールはBOMを自動的に削除する必要があります。
変換のコツ
CSVの前処理
変換前にExcelで整理します:
- 空行の削除
- 日付フォーマットの統一
- フィールドの完全性チェック
選択的変換
必要な列だけ変換します。不要な列をCSVから削除し、JSONのサイズを削減します。
バッチ変換
非常に大きいCSVを一括変換すると重くなる可能性があります。数百行ずつバッチで変換します。
結果のバリデーション
変換後、JSONフォーマットツールで整形し、数件をサンプルチェックして正確性を確認します。
DocsAllで変換
- CSVファイルをアップロードまたはCSVの内容を貼り付け
- ツールが自動的にヘッダーとデータを解析
- 変換オプションを設定(型認識など)
- JSONを生成
- 結果をコピーまたはダウンロード
変換はブラウザ上で実行され、CSVデータはサーバーにアップロードされないため、機密データの処理に適しています。
逆変換:JSON to CSV
逆にJSONをCSVに変換したい場合もあります:
- APIがJSONを返すが、Excelで分析するためにエクスポート
- データベースのJSONフィールドを表形式でエクスポート
JSON to CSVの課題:
- ネスト構造をフラット化する必要がある
- 配列フィールドの処理(結合または複数行に展開)
- フィールドが不統一の場合、空値で埋める
まとめ
CSV to JSONのポイントは、ヘッダーからキー名へのマッピング、データ型の認識、ネスト構造の処理です。カンマを含むフィールド、中国語のエンコード、空値、大きな数値の精度に注意してください。DocsAll CSV to JSONツールはブラウザ上で動作し、データが外部に漏れません。