商品コードの「001」が「1」になったり、メモのカンマや改行で列がずれたりすると、変換できてもデータをそのまま使えません。この記事では、ITtripが提供する「ぱっとネット」の「CSV・JSON 相互変換」を使い、プログラムを書かずにCSVをJSONへ変換し、値が保たれたか確認する手順を紹介します。
今回のツールはCSVの先頭行を見出しとして扱い、各セルの値をすべて文字列で出力します。商品コードや電話番号のように、数字に見えても表記が大切なデータの単発変換に使えます。数値型が必要なシステムへ渡す場合は、受け取り先の仕様も確かめてください。
変換前に、見出しとデータの形を確認する
CSVでは、セル内のカンマや改行を含む値を二重引用符で囲みます。値の中に二重引用符がある場合は、二つ続けて書きます。たとえば「引用符 “あり”」は、CSVでは"引用符 ""あり"""という表記になります。この扱いはRFC 4180に記載されたCSVの共通形式に沿います。
まずは下の例で、カンマが一つのメモに入り、二行のメモが一つのセルになることを試します。コピー時には、最後のメモ内の改行も含めてください。
id,name,note
001,東京,"打合せ,午前"
002,大阪,"1行目
2行目"
ぱっとネットでCSVをJSONへ変換する
- 「CSV・JSON 相互変換」を開き、「CSV または JSON」に上の例を貼り付けます。
- 「処理」で「CSV → JSON」を選びます。
- 「区切り文字」を「カンマ(CSV)」にします。タブ区切りのデータなら「タブ(TSV)」を選びます。
- 「実行する」を押し、結果の行数と内容を確認します。

CSV・JSONの変換はブラウザー内で行われ、入力内容を当サービスのサーバーへ送信しません。機密情報を扱う場合は、所属先のルールと利用環境を確認してください。記事の例には実際の顧客情報を使っていません。 ページ配信や共通紹介枠の読み込み、公開ページの閲覧計測などの通信は発生します。閲覧計測には入力内容や変換結果を含めません。詳しくはぱっとネットのプライバシーをご覧ください。
結果で見るのは、件数・先頭ゼロ・メモの中身
例の結果は、二件のオブジェクトを含むJSON配列です。idの値が"001"、"002"となり、東京のメモにカンマが残ることを確認します。
[
{
"id": "001",
"name": "東京",
"note": "打合せ,午前"
},
{
"id": "002",
"name": "大阪",
"note": "1行目\n2行目"
}
]

JSONの数値は先頭ゼロを認めないため、001を保つには文字列として扱います。また、JSON文字列の改行は\nなどのエスケープ表記になります。結果にこの文字が見えても、改行が消えたという意味ではありません。文字列と数値、文字のエスケープについてはRFC 8259に記載があります。
確認できたら結果をコピーするか保存します。納品前には、一件目だけでなく、空欄・引用符・改行を含む行も元のCSVと見比べると、貼り付け漏れや区切り文字の選び間違いに気づけます。
変換エラーが出たときの直し方
| 状態 | 確認すること |
|---|---|
| 見出しが空欄・重複 | 先頭行の各列に、重ならない見出しを付けます。 |
| 列数が見出しと異なる | 余分なカンマ、足りないセル、引用符の閉じ忘れを確認します。 |
| 引用符が不正 | セル全体を囲む引用符を閉じ、値の中の引用符は二つ続けます。 |
| 表全体が一つの列になる | カンマ区切りとタブ区切りの選択を確認します。 |
このツールでは見出し行が必須です。見出しのないCSVを貼ると、一件目のデータを見出しとして扱ってしまうことがあります。たとえば二件あるはずなのに一件しか出ない場合は、先頭に見出しがあるか確かめてください。
JSONからCSVへ戻すときは、完全な往復一致を前提にしない
逆方向の変換では、一件以上のオブジェクトを含むJSON配列を使います。全オブジェクトのキーを列にし、欠けた値やnullは空欄、入れ子のオブジェクトや配列は一つのセル内のJSON文字列になります。元の型や入れ子構造を、そのまま表へ移す変換ではありません。
「表計算ソフトの数式実行を防ぐ(JSON → CSV)」は初期状態でオンです。=、+、-、@で始まるセルにはアポストロフィが付きます。たとえば=1+1は'=1+1になり、値の表記が変わります。出力をExcelなどで開く場合の対策として、オンのまま内容を確認してください。
さらに、Excelなどで一度001が1になり、その状態で保存されたCSVからは、元の桁数をこのツールで復元できません。先頭ゼロを保持した元ファイルを用意し、変換前後の値を確認することが大切です。
一度だけの変換なら、見出しを整え、CSV → JSONで実行し、件数と代表的な値を照合するところまでで作業を終えられます。大量データの定期連携や列ごとの型変換が必要なら、その仕様を決めて別の取り込み処理を用意しましょう。
CSVを書き出す作業を繰り返したり、他の処理へ組み込んだりする場合は、Pythonの標準csvモジュールを使う方法もあります。PythonでCSVファイルを書き込む方法では、csv.writerやDictWriter、引用符の指定を紹介しています。一度だけの変換と、繰り返し実行する処理とで使い分けてください。

コメント