对于以下json文件,我需要根据特定条目的搜索结果获取“ name”元素
例如:json.txt
{
"regions": {
"var1": {
"name": "City 1",
"domains": {
"var3": {
"Owner": "Joe"
}
}
},
"var2": {
"name": "City 2",
"domains": {
"var4": {
"Owner": "Brown"
}
}
}
}
}
我尝试了
$ jq --arg arg1 'var4' '.regions | if (to_entries[].value.domains[$arg1]) then to_entries[].value.name else empty end' json.txt
但返回
"City 1"
"City 2"
我希望结果仅提取
"City 2"
任何帮助将不胜感激
答案 0 :(得分:2)
您需要将to_entries[]
子句拉出if ... then ... else ... end
:
.regions | to_entries[] | if .value.domains[$arg1] then .value.name else empty end
这可以简化为:
.regions | to_entries[] | .value | select(.domains[$arg1]) | .name