如何使用JQ递归过滤嵌套JSON对象并返回指定格式结果
用JQ筛选JSON中val2等于"bar1"的对象
原始输入JSON
{ "source_1": [ { "val1": "foo1", "val2": "bar1" }, { "val1": "foo2", "val2": "bar2" } ], "source_2": [ { "val1": "foo1", "val2": "bar1" }, { "val1": "foo3", "val2": "bar3" } ] }
JQ命令
使用以下命令可保留原顶层键结构,筛选出所有val2等于"bar1"的对象:
jq 'map_values( map( select(.val2 == "bar1") ) )'
命令说明
map_values(...):遍历顶层的每个键值对,对每个数组类型的值做后续处理map(...):遍历数组内的每个对象select(.val2 == "bar1"):筛选出val2属性值为"bar1"的对象
处理后结果
{ "source_1": [ { "val1": "foo1", "val2": "bar1" } ], "source_2": [ { "val1": "foo1", "val2": "bar1" } ] }
内容的提问来源于stack exchange,提问作者dbosky
相关产品推荐
相关产品推荐

