jq:构建查找 table
jq: build lookup table
我正在尝试在 jq 中构建查找 table。
输入:
{
"Object1": {
"id": 1,
"name": "object1name"
},
"Object2": {
"id": 24,
"name": "object2name"
}
}
预期输出:
{
"object1name":1,
"object2name":2
}
我尝试了以下 jq 代码,但它给了我一个错误:
{.[] | ((.name):.id)}
收集数组中的对象并用add
减少它:
$ jq '[.[] | {(.name): .id}] | add' tmp.json
{
"object1name": 1,
"object2name": 24
}
您可以将过滤器写得更简洁一点,如 map({(.name): .id}) | add
。
Why doesn't my code [work] though?
你很接近!尽管@chepner 的回答是最直接的,但按照您似乎一直在思考的思路回答肯定是可能的:
[ {(.[] | .name): .id}] | add
我正在尝试在 jq 中构建查找 table。
输入:
{
"Object1": {
"id": 1,
"name": "object1name"
},
"Object2": {
"id": 24,
"name": "object2name"
}
}
预期输出:
{
"object1name":1,
"object2name":2
}
我尝试了以下 jq 代码,但它给了我一个错误:
{.[] | ((.name):.id)}
收集数组中的对象并用add
减少它:
$ jq '[.[] | {(.name): .id}] | add' tmp.json
{
"object1name": 1,
"object2name": 24
}
您可以将过滤器写得更简洁一点,如 map({(.name): .id}) | add
。
Why doesn't my code [work] though?
你很接近!尽管@chepner 的回答是最直接的,但按照您似乎一直在思考的思路回答肯定是可能的:
[ {(.[] | .name): .id}] | add