您好我想更改每个json对象键值。 JSON -
abc='[{"fn": 1,"name":"raimonds"},{"fn": 2,"name":"john"}]'
现在在jq中使用一些过滤器 -
res=$(echo "$abc" | jq 'map(if .fn then . + {"fn":22222} else . end)')
现在,如果我回复$ res,它会重新调整 -
'[{"fn": 22222,"name":"raimonds"},{"fn": 22222,"name":"john"}]'
我想将每个fn乘以2并输出如下 -
abc='[{"fn": 22222,"name":"raimonds"},{"fn": 44444,"name":"john"}]'
我该怎么做?谢谢!
答案 0 :(得分:1)
假设:
res='[{"fn": 22222,"name":"raimonds"},{"fn": 22222,"name":"john"}]'
正如@chepner指出的那样, 你可以在过滤器中修改对象:
echo "$res" | jq '.[].fn *= 2'
输出:
[
{
"fn": 44444,
"name": "raimonds"
},
{
"fn": 44444,
"name": "john"
}
]
我的原始建议是用修改后的属性构造对象, 这将很快变得单调乏味,并且没有任何优势:
echo "$res" | jq '[ .[] | {fn: (.fn * 2), name: .name} ]'
答案 1 :(得分:0)