jqコマンド完全ガイド:JSON処理の基本から応用まで
jqコマンドの使い方を基礎から応用まで解説。JSONのパース、フィルタリング、変換方法を具体例で学べます。APIレスポンスの処理やシェルスクリプトでの活用に最適。
jqJSONコマンドAPIシェルパース2026/5/25
jqとは?
jqはコマンドラインでJSONデータを処理するための軽量かつ強力なツールです。シェル上でJSONのパース、フィルタリング、変換を簡単に行えます。APIレスポンスの解析やログファイルの処理など、幅広い用途で活躍します。
主な特徴
インストール方法
macOS
brew install jq
Ubuntu/Debian
sudo apt-get install jq
CentOS/RHEL
sudo yum install jq
Windows
Chocolateyを使用:choco install jq
基本的な使い方
シンプルなJSONのパース
sample.json:
{
"name": "Alice",
"age": 30,
"city": "Tokyo"
}
jq '.' sample.json
出力:
{
"name": "Alice",
"age": 30,
"city": "Tokyo"
}
特定のキーの値を取得:
jq '.name' sample.json
<h1>"Alice"</h1>
配列の処理
array.json:
[
{"id": 1, "name": "Apple"},
{"id": 2, "name": "Banana"},
{"id": 3, "name": "Cherry"}
]
最初の要素:
jq '.[0]' array.json
特定のキーの値だけを取得:
jq '.[].name' array.json
<h1>"Apple"</h1>
<h1>"Banana"</h1>
<h1>"Cherry"</h1>
パイプでデータを渡す
curl -s https://api.example.com/data | jq '.'
フィルタリングと条件指定
条件に合う要素を抽出
jq '.[] | select(.age > 25)' users.json
複数条件
jq '.[] | select(.age > 25 and .city == "Tokyo")' users.json
データの変換
キーの名前変更
jq '{new_name: .old_name}' data.json
配列をオブジェクトに変換
jq 'map({key: .id, value: .name}) | from_entries' data.json
フラット化
jq 'flatten' nested.json
実践的な使用例
APIレスポンスから特定のデータを抽出
GitHub APIでリポジトリ名を取得:
curl -s https://api.github.com/users/octocat/repos | jq '.[].name'
JSONの整形
cat messy.json | jq '.'
CSVへの変換
jq -r '.[] | [.name, .age, .city] | @csv' data.json > output.csv
高度なテクニック
変数の使用
jq --arg key "name" '.[] | .[$key]' data.json
関数の定義
jq 'def add(x;y): x + y; add(1;2)'
再帰的な処理
jq '.. | .name? | select(. != null)' data.json
よくあるエラーと対処法
jq .で構文チェック// emptyで回避まとめ
jqはシェル上でJSONを扱う際の必須ツールです。基本的なパースから複雑な変換まで、一度覚えれば作業効率が大幅に向上します。まずは簡単なフィルタから試し、徐々に応用を身につけましょう。