`jq` コマンドで、JSONの配列内のオブジェクトから必要なキーのみを指定してJSONを出力する


jq コマンドを久々に使ったら、下記の入力 JSON を出力 JSON のように出力したい時に、ちょっと迷ったので、メモ。結局、公式?のチュートリアルに普通にあったんだけど。

入力 JSON

[
  {
    "id": "xx1",
    "name": "hoge",
    "age": 20
  },
  {
    "id": "xx2",
    "name": "fuga",
    "age": 30
  },
  {
    "id": "xx3",
    "name": "piyo",
    "age": 40
  }
]

出力 JSON

[
  {
    "id": "xx1",
    "name": "hoge"
  },
  {
    "id": "xx2",
    "name": "fuga"
  },
  {
    "id": "xx3",
    "name": "piyo"
  }
]

コマンド

echo '[{"id":"xx1","name":"hoge","age":20},{"id":"xx2","name":"fuga","age":30},{"id":"xx3","name":"piyo","age":40}]' | jq '[.[] | {id: .id, name: .name}]'

jq '.[] | {id: .id, name: .name}' の jq のパラメータを [] で囲んだだけ。