Tips

例1: JSONデータをきれいに整形して表示

`jq`は、コマンドラインでJSONデータを処理するための軽量で柔軟なツールです。JSONファイルの整形、フィルタリング、変換などを強力なDSL(ドメイン固有言語)を使って簡単に行うことができます。

技術・言語・ツール: jq

jqは、コマンドラインでJSONデータを処理するための軽量で柔軟なツールです。JSONファイルの整形、フィルタリング、変換などを強力なDSL(ドメイン固有言語)を使って簡単に行うことができます。

jqでJSONデータを効率的に操作・整形する

APIレスポンスやログファイルなど、JSON形式のデータは開発において頻繁に登場します。jqを使えば、複雑なJSON構造から必要な情報だけを抽出したり、読みやすい形に整形したり、新しいJSONに変換したりする作業を効率化できます。

# 例1: JSONデータをきれいに整形して表示
echo '{"name":"Alice","age":30,"city":"New York"}' | jq '.'

# 例2: 配列から特定のキーの値だけを抽出
echo '[{"id":1,"name":"Item A"},{"id":2,"name":"Item B"}]' | jq '.[].name'
# 出力:
# "Item A"
# "Item B"

# 例3: 条件に基づいてオブジェクトをフィルタリング
echo '[{"id":1,"status":"active"},{"id":2,"status":"inactive"}]' | jq '.[] | select(.status == "active")'
# 出力:
# {
#   "id": 1,
#   "status": "active"
# }

# 例4: 既存のJSONから新しいJSONオブジェクトを作成(フィールドの選択とリネーム)
echo '[{"user_id":1,"user_name":"Bob","email":"bob@example.com"},{"user_id":2,"user_name":"Carol","email":"carol@example.com"}]' | jq '.[] | {id: .user_id, name: .user_name}'
# 出力:
# {
#   "id": 1,
#   "name": "Bob"
# }
# {
#   "id": 2,
#   "name": "Carol"
# }

# 例5: 生の文字列として値を出力(他のコマンドと組み合わせる際に便利)
echo '{"version":"1.2.3"}' | jq -r '.version'
# 出力:
# 1.2.3

注意点やおすすめポイント

  • パイプ(|)と組み合わせて他のコマンドと連携させることで、さらに強力なワークフローを構築できます。例えば、curl ... | jq ... でAPIのレスポンスを即座に処理するなどが可能です。
  • 複雑なjqクエリはファイルに保存し、jq -f query.jq data.json のように実行すると管理しやすくなります。
  • jq --raw-output (-r) オプションは、文字列をクォートなしで出力できるため、シェル変数への代入や他のコマンドへの入力として非常に役立ちます。
  • 公式ドキュメントには豊富な例が載っているので、困ったときは参照してみましょう。