jq查找值并返回标量



我是一个jq新手,正在努力让它服从我的意愿。

我想在JSON对象中搜索具有给定名称的任何键,并提取第一次出现的值,以便将其分配给bash变量以供以后使用。如:

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

如果我使用:

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

我得到了我正在寻找的输出,特别是"apple"OTOH

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

在搜索结果

[
null
]

不是标量值,也不是我想要查找的。

请不要告诉我应该根据其他属性或JSON对象的结构进行搜索(除非你要解释如何进行深度优先和宽度优先搜索)。

您正在寻找这样的内容:

first(recurse | objects | select(has("name")) .name)
<<p><一口>在线演示/一口>

相关内容

  • 没有找到相关文章

最新更新