json jq搜索值并返回标量

axr492tv  于 2023-04-08  发布在  其他
关注(0)|答案(1)|浏览(102)

我是一个新手与jq和挣扎弯曲它我的意志。
我想在JSON对象中搜索任何具有给定名称的键,并提取第一次出现的值,以便将其分配给bash变量供以后使用。例如:

{ 
  "fruit":{
      "name":"apple","color":"green","sub":{
               "name":"crab-apple","color":"red","size":"small"
      }
   }
}

如果我用途:

jq -r 'map(.name)|.[0]?'

我得到了我正在寻找的输出,特别是“苹果”。OTOH

jq -r 'map(.size)|.[0]?'

导致

[
   null
]

不是标量值,也不是我想找到的。
请不要告诉我应该根据其他属性或JSON对象的结构进行搜索(除非你要解释如何进行深度优先搜索和广度优先搜索)。

ipakzgxi

ipakzgxi1#

你要找的是这样的东西:

first(recurse | objects | select(has("name")) .name)

Online demo

相关问题