json - jq - 根据子元素的搜索结果查找父元素
问题描述
对于以下 json 文件,我需要根据该特定条目的搜索结果获取“名称”元素
例如: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"
任何帮助将不胜感激
解决方案
你需要拉出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
推荐阅读
- mariadb - 永久禁用 MariaDB 的外键检查
- rust - 如何添加绑定到通用关联类型的特征?
- javascript - 在 Powerbi 嵌入式报告中运行自定义 Javascript
- javascript - 如何在预定义接口内指定数据?
- python - 使用 Jump Flooding 算法的 Voronoi 图:性能问题
- snowflake-cloud-data-platform - 雪花查询失败实时提醒
- excel - 使用 Comparable Interface (VB.net) 比较 2 个 Excel 工作表并突出显示删除、更改或添加
- c# - 如何知道控件何时完全可见?
- c++ - Autosar 标准编译方式使用正则表达式
- node.js - 如何使用 mongodb 获取按类别过滤的特定专辑的歌曲?