我是一个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><一口>在线演示/一口>一口>