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