CSVとJSONは得意な場面が違う

CSVは表計算ソフトや一括インポートで扱いやすい、シンプルな表形式です。
一方でJSONは、APIレスポンスや設定データのように、オブジェクトや配列を含む構造化データを表現しやすい形式です。

CSVとJSONを相互変換する方法:API連携・データ移行での使い分け

この2つを相互変換できると、非エンジニアとのデータ受け渡し、管理画面への一括登録、APIのテストデータ作成がかなり楽になります。

CSVからJSONへ変換するときのポイント

ヘッダー行をキーとして使う

多くのCSVでは、1行目に name,email,role のようなヘッダーがあります。
JSONへ変換するときは、このヘッダーをオブジェクトのキーとして使うと扱いやすくなります。

[
  { "name": "Alice", "email": "[email protected]", "role": "admin" }
]

区切り文字を確認する

CSVと呼ばれていても、実際にはカンマではなくタブやセミコロンで区切られていることがあります。
うまく列に分かれない場合は、区切り文字の設定を見直しましょう。

文字列と数値の扱いに注意する

CSVではすべての値が文字列として見えます。
JSONに変換したあと、ID、郵便番号、電話番号のように「数字に見えるが文字列として扱うべき値」がないか確認しておくと安全です。

JSONからCSVへ変換するときのポイント

JSONをCSVにする場合は、1つの配列に同じ形のオブジェクトが並んでいると変換しやすくなります。
ただし、ネストしたオブジェクトや配列は、そのまま表の1セルに入りきらないことがあります。

たとえば profile.name のようにキーをフラット化するか、必要な項目だけに絞ってCSV化するのが実務では扱いやすいです。

実例:オブジェクト配列をCSVにする

次のようなJSONがあるとき、

[
  { "id": 1, "name": "Alice", "role": "admin" },
  { "id": 2, "name": "Bob", "role": "member" }
]

すべてのオブジェクトが同じキーを持っていれば、キーをヘッダー行に、値を各行にマッピングするだけでCSVになります。

id,name,role
1,Alice,admin
2,Bob,member

逆に、オブジェクトごとにキーがバラバラ(あるものには role がない、など)だと列がずれます。CSV化する前に「全レコードが同じ形か」を確認しておくと事故を防げます。

エスケープと文字コードの落とし穴

CSVは見た目が単純なぶん、値の中身によって壊れやすい形式です。実務でつまずきやすいのは次の2点です。

カンマ・改行・引用符を含む値

値そのものにカンマや改行が入っていると、囲みクォートでエスケープしないと列がずれます。RFC 4180 では、値を "..." で囲み、値の中の """ と二重にするのが標準です。

id,note
1,"Hello, world"
2,"複数行の
メモ"
3,"彼は""了解""と言った"

変換ツールやライブラリがこのエスケープを自動で行ってくれるかは要確認です。手書きで結合すると、ほぼ確実にこの罠を踏みます。

文字コードとBOM

日本語を含むCSVをExcelで開くと文字化けすることがあります。これはExcelがUTF-8をShift_JISと誤認するためで、UTF-8(BOM付き) で書き出すと多くの環境で正しく開けます。逆に、プログラムで読み込む側はBOMを除去しないと先頭キーがずれることがあるので、用途に応じて使い分けます。

DevToolKitsで変換する

CSV ⇔ JSON変換ツール を使うと、CSVからJSON、JSONからCSVの両方向に変換できます。
区切り文字やヘッダー行の有無を切り替えられるので、Excel、スプレッドシート、APIレスポンスの間を行き来しやすくなります。

変換後のJSONをさらに確認したい場合は、JSON整形ツール で構造を読みやすく整えられます。
設定ファイルとして扱いたい場合は、JSON ⇔ YAML変換ツール へつなげるのも便利です。

よくある質問

CSVの数字がJSONで勝手に数値になってしまいます

郵便番号やID、電話番号のように「数字に見えるが文字列として扱うべき値」は、数値化されると先頭の0が消えたり桁あふれしたりします。変換時に文字列として扱う設定があればそれを使い、なければ変換後に該当フィールドの型を確認・修正してください。

ネストしたJSONをCSVに変換できますか?

CSVは平らな表形式のため、ネストしたオブジェクトや配列はそのままでは1セルに収まりません。profile.name のようにキーをフラット化するか、必要な項目だけに絞ってからCSV化すると扱いやすくなります。

カンマ区切りなのに列がずれます

値の中にカンマや改行が含まれていると、囲みクォート("...")で正しくエスケープされていない限り列がずれます。また、CSVと呼ばれていてもタブやセミコロン区切りのことがあります。区切り文字とクォートの設定を確認してください。

Excelで開くと日本語が文字化けします

ExcelはUTF-8のCSVをShift_JISと誤認することがあり、日本語が文字化けします。UTF-8(BOM付き) で保存し直すと多くの環境で正しく表示されます。逆に、プログラムから読み込む場合はBOMが余分な文字として混入することがあるため、読み込み側でBOMを除去してください。

キーがバラバラなJSONをCSVにできますか?

レコードごとにキーが異なる場合、全キーの和集合をヘッダーにして、存在しない値を空欄にすれば1つのCSVにまとめられます。ただし列が増えて見通しが悪くなるため、事前にデータの形を揃えるか、必要な項目だけに絞ることをおすすめします。