CSVをJSONに変換する方法|先頭ゼロ・カンマ・セル内改行を保つ確認手順

商品コードの「001」が「1」になったり、メモのカンマや改行で列がずれたりすると、変換できてもデータをそのまま使えません。この記事では、ITtripが提供する「ぱっとネット」の「CSV・JSON 相互変換」を使い、プログラムを書かずにCSVをJSONへ変換し、値が保たれたか確認する手順を紹介します。

今回のツールはCSVの先頭行を見出しとして扱い、各セルの値をすべて文字列で出力します。商品コードや電話番号のように、数字に見えても表記が大切なデータの単発変換に使えます。数値型が必要なシステムへ渡す場合は、受け取り先の仕様も確かめてください。

目次

変換前に、見出しとデータの形を確認する

CSVでは、セル内のカンマや改行を含む値を二重引用符で囲みます。値の中に二重引用符がある場合は、二つ続けて書きます。たとえば「引用符 “あり”」は、CSVでは"引用符 ""あり"""という表記になります。この扱いはRFC 4180に記載されたCSVの共通形式に沿います。

まずは下の例で、カンマが一つのメモに入り、二行のメモが一つのセルになることを試します。コピー時には、最後のメモ内の改行も含めてください。

id,name,note
001,東京,"打合せ,午前"
002,大阪,"1行目
2行目"

ぱっとネットでCSVをJSONへ変換する

  1. 「CSV・JSON 相互変換」を開き、「CSV または JSON」に上の例を貼り付けます。
  2. 「処理」で「CSV → JSON」を選びます。
  3. 「区切り文字」を「カンマ(CSV)」にします。タブ区切りのデータなら「タブ(TSV)」を選びます。
  4. 「実行する」を押し、結果の行数と内容を確認します。
CSV・JSON 相互変換に先頭ゼロとセル内改行を含むCSVを入力した画面
先頭行に見出しを置き、CSV → JSONとカンマ区切りを選びます。

CSV・JSONの変換はブラウザー内で行われ、入力内容を当サービスのサーバーへ送信しません。機密情報を扱う場合は、所属先のルールと利用環境を確認してください。記事の例には実際の顧客情報を使っていません。 ページ配信や共通紹介枠の読み込み、公開ページの閲覧計測などの通信は発生します。閲覧計測には入力内容や変換結果を含めません。詳しくはぱっとネットのプライバシーをご覧ください。

結果で見るのは、件数・先頭ゼロ・メモの中身

例の結果は、二件のオブジェクトを含むJSON配列です。idの値が"001"、"002"となり、東京のメモにカンマが残ることを確認します。

[
  {
    "id": "001",
    "name": "東京",
    "note": "打合せ,午前"
  },
  {
    "id": "002",
    "name": "大阪",
    "note": "1行目\n2行目"
  }
]
idの001と002、メモ内のカンマと改行が保持されたJSON変換結果
idは文字列になり、セル内改行はJSON文字列の中で\nと表示されます。

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、引用符の指定を紹介しています。一度だけの変換と、繰り返し実行する処理とで使い分けてください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次