使用jq将名称/值对的数组转换为具有命名键的对象

时间:2018-09-12 21:13:39

标签: json object key command-line-interface jq

以以下格式提供json文件:

[
  {
    "name" : "A",
    "value" : "4"
  },
  {
    "name" : "B",
    "value" : "2"
  },
  {
    "name" : "C",
    "value" : {
      "X": "Something",
      "Y": "Else"
    }
  }
]

我如何使用jq将其转换为类似的内容?

{
  "A": "4",
  "B": "2",
  "C": {
    "X": "Something",
    "Y": "Else"
  }
}

我确实使用jq 'map( { (.name): .value } )接近了,但是仍然将每个对象放在单独的括号中,而不是将它们放在一起。

1 个答案:

答案 0 :(得分:2)

使用您的方法,只需将add添加到过滤器中即可:

map( { (.name): .value } ) | add