如何在不使用表索引的情况下从对象复制

问题描述 投票:0回答:1

输入的是

{
"zoo": [
   { "x": { "guesst": "" } },
   { "y": { "guesst": "zebra" } }
  ]
}

我需要类似的输出

{
"zoo": [
   { "x": { "guesst": "zebra" } },
   { "y": { "guesst": "zebra" } }
  ]
}

我做到了:

jq '.zoo[0].x.guesst = .zoo[1].y.guesst'

但是,如果我不知道数组中对象的顺序怎么办?

json jq edit
1个回答
0
投票

使用

.[]
迭代所有项目,并使用
select
has
过滤正确的项目:

jq '(.zoo[] | select(has("x"))).x.guesst = (.zoo[] | select(has("y"))).y.guesst'

演示

© www.soinside.com 2019 - 2024. All rights reserved.