jqの使い方:インストール、JSONキー抽出、配列map、curlパイプ
jqを入れ、JSONフィールドを取り出し、配列をmapし、curlパイプでAPI応答を短く見る。
REST APIやCIログを調べるとき、jqは端末でJSONを絞り込み・変形できます。macOS・Linux・Windowsの公式インストール、フィールド抽出、配列map、curlパイプを hereink 読者向けにまとめます。
検索語はjqでJSONを処理しcurlとパイプする方法。インストール、.key、map、API応答の短縮表示ができる状態にします。
jqが解くこと
json.toolより柔軟
Pythonの json.tool は整形のみ。jqは .data.items[0].id だけ表示、配列フィルタ、ネスト flatten が可能。
curlと相性が良い
API本文は数百行になりがち。末尾に | jq '.field' を付け、必要なキーだけ残します。
確認:
jq --version。公式:jqlang.org、GitHubjqlang/jq。
3 OSにjqを入れる
- 1macOS(Homebrew)
brew install jq。which jqとjq --versionで確認。 - 2Linux
Debian/Ubuntu:
sudo apt update && sudo apt install jq。Fedora:sudo dnf install jq。Arch:sudo pacman -S jq。 - 3Windows
winget install jqlang.jqまたはchoco install jq。新しい端末でjq --version。 - 4最初のフィルタ
echo '{"ok":true,"n":3}' | jq .okでtrue。echo '{"a":1}' | jq .で全体整形。
キー抽出と配列map
echo '{"user":{"name":"Lin"}}' | jq .user.name
echo '{"items":[{"id":1},{"id":2}]}' | jq '.items[]'
echo '{"items":[{"id":1},{"id":2}]}' | jq '.items | map(.id)'
echo '[{"k":"a","v":1},{"k":"b","v":2}]' | jq '[.[] | select(.v > 1)]'フィルタはシングルクォートで。ドット . は現在のJSON値、[] は配列反復。
curlとパイプ
| 場面 | 例 | メモ |
|---|---|---|
| 公開API | curl -s https://api.github.com/repos/jqlang/jq | jq '{name, stars: .stargazers_count}' | 必要フィールドのみ |
| 生文字列 | curl -s … | jq -r '.token' | -r で引用符除去 |
| コンパクト行 | curl -s … | jq -c '.items[]' | 1オブジェクト1行 |
- 向く
- RESTフィールド確認、コンテナJSONログのフィルタ、CIメタデータ解析。
- 向かない
- 巨大JSONのその場編集;非JSONテキスト。
parse errorとは?
入力が有効なJSONでない。単独で jq . を試す。NDJSONは jq -s。
Windowsでjqが見つからない?
端末を開き直す。where jq。
jqとyqは同じ?
違います。jqはJSON専用。YAMLはyq等。
フィールドが分かったら図に
API形状が分かっても境界は一枚の図で揃えやすい。スペースの作り方。