created: 2019-07-03T06:30:19.000Z

jq変形 {配列 => IDをキーとするオブジェクト}

こんな配列を

[
  {"id": "123", "name": "abc"},
  {"id": "456", "name": "qwe"}
]

こうしたい

{
  "123": {"id": "123", "name": "abc"},
  "456": {"id": "456", "name": "qwe"}
}

add を使うとできる

$ pbpaste | jq '{ (.id): . } | [ . ] | add'
{
  "123": {
    "id": "123",
    "name": "abc"
  },
  "456": {
    "id": "456",
    "name": "qwe"
  }
}

add

通常は足し算や文字列結合に使われるが、 オブジェクトの配列に適用すると、それぞれの要素をマージしたオブジェクトができる

[
  { "123": {"id": "123", "name": "abc"} }
  { "456": {"id": "456", "name": "qwe"} }
]

↓ こうなるイメージ

{
  "123": {"id": "123", "name": "abc"},
  "456": {"id": "456", "name": "qwe"}
}