jqコマンド完全ガイド:JSON処理の基本から応用まで

jqコマンドの使い方を基礎から応用まで解説。JSONのパース、フィルタリング、変換方法を具体例で学べます。APIレスポンスの処理やシェルスクリプトでの活用に最適。

jqJSONコマンドAPIシェルパース2026/5/25

jqとは?

jqはコマンドラインでJSONデータを処理するための軽量かつ強力なツールです。シェル上でJSONのパース、フィルタリング、変換を簡単に行えます。APIレスポンスの解析やログファイルの処理など、幅広い用途で活躍します。

主な特徴

  • フィルタリング: 条件に合うデータだけを抽出
  • 変換: JSONの構造を変更したり、フォーマットを整えたり
  • パイプライン: 他のコマンドと組み合わせて複雑な処理
  • インストール方法

    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
    

    よくあるエラーと対処法

  • parse error: JSONが不正。jq .で構文チェック
  • Cannot iterate over null: 配列やオブジェクトがnull。// emptyで回避
  • jq: error: syntax error: フィルタの構文ミス。引用符の確認
  • まとめ

    jqはシェル上でJSONを扱う際の必須ツールです。基本的なパースから複雑な変換まで、一度覚えれば作業効率が大幅に向上します。まずは簡単なフィルタから試し、徐々に応用を身につけましょう。