Developer Tools

CSVからJSONへ:APIにおける表形式データの扱い方

スプレッドシートをAPIで使えるJSONに変換する方法、ヘッダーや引用符の注意点、そして送信前のペイロード検証について解説します。

6分で読めます

Analytics and data

CSV は、CRMからのエクスポート、銀行明細、在庫レポートなど、ビジネスの世界でいまだに広く使われているデータ形式です。一方、多くのRESTやサーバーレスAPIが期待するのは JSON です。この2つをきれいに変換できれば、その都度スクリプトを書く手間を大幅に省けます。

基本的な構造:オブジェクトの配列

APIで最も扱いやすいJSONの形式は、オブジェクトの配列です。1行につき1つのオブジェクトで、キーはヘッダー行から取得します:

[
  { "sku": "A-100", "qty": "12", "warehouse": "East" },
  { "sku": "B-220", "qty": "3", "warehouse": "West" }
]

CSVは別途型変換の処理を行わない限り、すべての値を文字列として扱います。qty を数値として扱いたい場合は、API側で型変換を行う必要があります。

ヘッダーと一貫性

  • 1行目は必ず列名にしてください。変換前に重複する列名はリネームしておきましょう。
  • ExcelからのUTF-8エクスポートには、先頭に BOM 文字が含まれる場合があります。これにより単純なパーサーが誤動作し、最初のヘッダーが \uFEFFsku になってしまうことがあります。
  • クォートされたフィールドにはカンマや改行を含められます。優れたパーサーはこれを正しく処理しますが、カンマで単純に分割するregexでは対応できません。

JSON → CSVの場合

レポートツールやメールの添付ファイルでは、再びCSV形式が求められることがあります。オブジェクトごとに1行でエクスポートし、オブジェクトの構造が異なる場合はすべてのキーの和集合を列として使用します(値が存在しないセルは空のままにします)。

本番環境への投入前に検証する

変換後は、JSON Formatter でJSONを確認し、末尾のカンマ、シングルクォート、スプレッドシートの数式に起因する NaN 値などがないかチェックしましょう。

パイプラインがconfigリポジトリからのYAMLも受け付ける場合は、YAML to JSON を活用することで、同一のJSONスキーマテストに統一できます。

ローカルで試す

CSV ↔ JSON Converter はブラウザ上で動作します。サンプルのエクスポートデータを貼り付けると整形済みのJSONが得られます。逆変換でクイックレポートを作成することも可能です。ファイルがデバイスの外に出ることはありません。

ユーザーがCSVをアップロードする場合は信頼できない入力として扱ってください。ファイルサイズを制限し、Excelのフォーミュラインジェクション(=cmd| など)をスキャンし、セルの内容を絶対にコードとして実行しないようにしましょう。

まとめ

  • APIにはヘッダー+行 → オブジェクトの配列の形式を優先する。
  • クォートのルールを守り、本番環境では手作りのCSVパーサーを使わない。
  • 下流のサービスに送信する前に、必ず JSONとスキーマを検証する。