将键值对数组累积到单个对象中

时间:2019-12-19 20:29:48

标签: json object jq

如何使用jq进行转换:

[
  {
    "k": "a",
    "v": 123
  },
  {
    "k": "b",
    "v": 456
  }
]

对此:

{
  "a": 123,
  "b": 456
}

2 个答案:

答案 0 :(得分:4)

重建每个对象,然后add全部重建为一个大的单个对象。

map({(.k): .v}) | add

如果您的输入是大型数据集,那么就性能而言,reduce可能是更好的选择。

reduce .[] as {$k,$v} ({}; . + {($k): $v})

答案 1 :(得分:1)

另一种选择,由于您的对象类似于条目的结构,因此您可以将它们映射为那些键/值对,并以此方式转换为对象。

map({key: .k, value: .v}) | from_entries