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応答の短縮表示ができる状態にします。

インストールbrew / apt / winget
フィルタ.field · .[] · select
パイプcurl -s … | jq

jqが解くこと

json.toolより柔軟

Pythonの json.tool は整形のみ。jqは .data.items[0].id だけ表示、配列フィルタ、ネスト flatten が可能。

curlと相性が良い

API本文は数百行になりがち。末尾に | jq '.field' を付け、必要なキーだけ残します。

確認:jq --version。公式:jqlang.org、GitHub jqlang/jq。

3 OSにjqを入れる

  1. 1
    macOS(Homebrew)

    brew install jq。which jq と jq --version で確認。

  2. 2
    Linux

    Debian/Ubuntu:sudo apt update && sudo apt install jq。Fedora:sudo dnf install jq。Arch:sudo pacman -S jq。

  3. 3
    Windows

    winget install jqlang.jq または choco install jq。新しい端末で jq --version。

  4. 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とパイプ

場面例メモ
公開APIcurl -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形状が分かっても境界は一枚の図で揃えやすい。スペースの作り方。

今すぐ開始