jq JSON処理入門ガイド

ターミナルでJSONを整形・抽出するツールの使い方。


jqとは

コマンドラインでJSONを処理するツール。APIレスポンスの整形や特定フィールドの抽出に必須。


手順

01. jqインストール

Ubuntu/Debian:
sudo apt install jq -y
Mac:
brew install jq
Windows:
choco install jq

02. バージョン確認

jq --version

03. 基本的な整形

echo '{"name":"test","value":123}' | jq .

出力:

{
  "name": "test",
  "value": 123
}

04. 特定フィールド抽出

echo '{"name":"test","value":123}' | jq '.name'

出力: "test"

05. 完了


参考リンク


ここから先は、実用的なjqテクニックを解説します。


Q&A - 基本操作

全体を整形

cat data.json | jq .

特定キーを取得

jq '.key' data.json

ネストしたキー

jq '.parent.child' data.json

文字列として出力(引用符なし)

jq -r '.name' data.json

Q&A - 配列操作

配列全要素

echo '[1,2,3]' | jq '.[]'

配列のN番目

echo '["a","b","c"]' | jq '.[1]'

出力: "b"

配列の長さ

echo '[1,2,3,4,5]' | jq 'length'

出力: 5

配列の各要素から特定キー

echo '[{"name":"a"},{"name":"b"}]' | jq '.[].name'

Q&A - フィルタリング

条件で抽出

echo '[{"id":1,"active":true},{"id":2,"active":false}]' | jq '.[] | select(.active == true)'

複数条件

jq '.[] | select(.age > 20 and .country == "Japan")' data.json

Q&A - 変換・加工

新しいオブジェクト作成

echo '{"first":"John","last":"Doe"}' | jq '{fullName: (.first + " " + .last)}'

配列をマップ

echo '[1,2,3]' | jq 'map(. * 2)'

出力: [2,4,6]

キー一覧取得

echo '{"a":1,"b":2,"c":3}' | jq 'keys'

出力: ["a","b","c"]


Q&A - API応答処理

OpenAI応答からテキスト抽出

curl -s ... | jq -r '.choices[0].message.content'

Claude応答からテキスト抽出

curl -s ... | jq -r '.content[0].text'

エラーメッセージ抽出

curl -s ... | jq -r '.error.message // "No error"'

Q&A - 便利テクニック

ファイルに書き出し

curl -s https://api.example.com/data | jq . > formatted.json

複数ファイルをマージ

jq -s '.[0] * .[1]' file1.json file2.json

CSVに変換

echo '[{"name":"a","value":1},{"name":"b","value":2}]' | jq -r '.[] | [.name, .value] | @csv'

null値を除外

jq 'del(.[] | nulls)' data.json

Q&A - エラー対処

「parse error」

  • JSONが正しい形式か確認
  • シングルクォートとダブルクォートに注意

空の結果

  • パスが正しいか確認
  • .を忘れていないか確認

タグ: #jq #JSON #ターミナル #データ処理 #API
← ターミナルAPIシリーズ一覧へ