如何用jq过滤嵌套对象属性值时获取外层对象名称
使用jq筛选满足内层属性条件的外层对象名称
核心命令
直接用to_entries将外层对象转为键值对数组,再筛选提取目标名称:
jq 'to_entries[] | select(.value.prop2 == "yyyy") | .key' your-file.json
命令解释
to_entries:把外层的JSON对象转换为键值对数组,每个元素结构为{"key": "外层对象名称", "value": 内层属性集合}select(.value.prop2 == "yyyy"):过滤出内层prop2属性值等于"yyyy"的键值对.key:提取符合条件的外层对象名称
示例输出
执行上述命令后,输出带引号的字符串结果:
"anothername" "fubar"
如果需要无引号的纯文本结果,添加-r(raw output)参数:
jq -r 'to_entries[] | select(.value.prop2 == "yyyy") | .key' your-file.json
输出:
anothername fubar
内容的提问来源于stack exchange,提问作者David M. Karr
相关产品推荐
相关产品推荐

