jq:构建查找表

时间:2018-03-14 18:10:36

标签: json hashtable jq

我正在尝试在jq。

中构建一个查找表

输入:

  {
    "Object1": {
        "id": 1,
        "name": "object1name"
    },
    "Object2": {
        "id": 24,
        "name": "object2name"
    }
  }  

预期产出:

{
    "object1name":1,
    "object2name":2 
}

我尝试了以下jq代码,但它给了我一个错误:

{.[] | ((.name):.id)}

2 个答案:

答案 0 :(得分:3)

收集数组中的对象并使用add减少它:

$ jq '[.[] | {(.name): .id}] | add' tmp.json
{
  "object1name": 1,
  "object2name": 24
}

您可以将过滤器更简洁地写为map({(.name): .id}) | add

答案 1 :(得分:1)

  

为什么我的代码[工作]不行?

你很亲密!虽然@Chepner的答案是最直接的,但你似乎一直在思考的答案是肯定的:

[ {(.[] | .name): .id}] | add