我正在尝试在jq。
中构建一个查找表输入:
{
"Object1": {
"id": 1,
"name": "object1name"
},
"Object2": {
"id": 24,
"name": "object2name"
}
}
预期产出:
{
"object1name":1,
"object2name":2
}
我尝试了以下jq代码,但它给了我一个错误:
{.[] | ((.name):.id)}
答案 0 :(得分:3)
收集数组中的对象并使用add
减少它:
$ jq '[.[] | {(.name): .id}] | add' tmp.json
{
"object1name": 1,
"object2name": 24
}
您可以将过滤器更简洁地写为map({(.name): .id}) | add
。
答案 1 :(得分:1)
为什么我的代码[工作]不行?
你很亲密!虽然@Chepner的答案是最直接的,但你似乎一直在思考的答案是肯定的:
[ {(.[] | .name): .id}] | add