0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

APIレスポンスのCSVをJSONに変換してjqで加工する

0
Posted at

外部 API やデータエクスポートで CSV を受け取り、そのまま別のシステムに JSON で投入する、という場面は意外と多い。

この記事では、CSV → JSON 変換の方法と、jq で加工するパイプラインを紹介する。

CSV → JSON 変換の方法

方法 1: csvjson(csvkit)

Python ベースの CSV ツール群 csvkit に含まれる csvjson コマンド。

pip install csvkit
csvjson users.csv

出力:

[
  {"name": "田中太郎", "email": "tanaka@example.com", "role": "admin"},
  {"name": "佐藤花子", "email": "sato@example.com", "role": "editor"}
]

1 行目をヘッダーとして認識し、各行をオブジェクトに変換する。

方法 2: Miller(mlr)

mlr(Miller)は CSV / JSON / TSV を相互変換できるツール。

mlr --icsv --ojson cat users.csv

フィルタリングや集計もコマンドラインでできるので、CSV の前処理が多い場合に便利。

方法 3: ブラウザで変換する

CSV ファイルをエディタで開いてコピーし、ブラウザのツールに貼る方法。コマンドラインを使わない人と共有するとき向き。

FormatArc の CSV to JSON ツール は 1 行目をヘッダーとして自動認識し、JSON 配列に変換する。データはブラウザ内で処理されるので、社内データを貼っても外部に出ない。

jq で加工するパイプライン

CSV を JSON に変換した後、jq で必要なフィールドだけ取り出したり、形式を変えたりできる。

特定のフィールドだけ抽出

csvjson users.csv | jq '.[].name'
"田中太郎"
"佐藤花子"

フィルタリング

csvjson users.csv | jq '[.[] | select(.role == "admin")]'
[
  {
    "name": "田中太郎",
    "email": "tanaka@example.com",
    "role": "admin"
  }
]

形式を変換(配列 → オブジェクト)

email をキーにしたオブジェクトに変換する例:

csvjson users.csv | jq 'map({(.email): .name}) | add'
{
  "tanaka@example.com": "田中太郎",
  "sato@example.com": "佐藤花子"
}

実践: API レスポンスの CSV をそのまま加工

# 1. CSV をダウンロード
curl -s https://api.example.com/export/users.csv -o users.csv

# 2. JSON に変換してフィルタ
csvjson users.csv | jq '[.[] | select(.role == "admin") | {name, email}]'

# 3. そのまま別の API に POST
csvjson users.csv \
  | jq '[.[] | select(.role == "admin")]' \
  | curl -X POST -H "Content-Type: application/json" -d @- https://api.example.com/import

このように CSV → JSON → jq → API というパイプラインを組むと、手作業のデータ加工が減る。

使い分け

ツール 向いている場面
csvjson(csvkit) Python 環境がある。シンプルな変換
mlr(Miller) CSV の前処理が多い。集計もしたい
ブラウザツール 非エンジニアと共有。目視確認

コマンドラインで完結させたい場合は csvjson + jq、ブラウザで確認したい場合は FormatArc がおすすめ。

まとめ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?