如何用JQ同时提取JSON的summary与非OK状态的checks?
问题:同时提取JSON中的summary和非OK状态的checks条目
假设返回的JSON数据可通过以下bash命令定义:
export json_string='{ "summary": "1 failure", "checks": [ { "id": "check1", "status": "OK" }, { "id": "check2", "status": "FAILED" }, { "id": "check3", "status": "CONFIG_WARNING" } ] }'
需求为:同时提取summary字段和状态不为OK的checks条目;若不存在非OK状态的条目,则仅返回summary。
目前已能通过以下命令单独筛选出非OK状态的checks:
echo "$json_string" | jq '.checks | .[] | select(.status != "OK")'
最终解决方案
参考采纳的答案,使用以下命令可得到符合需求的输出格式:
echo "$json_string" | jq '{"summary": .summary, "checks":[.checks[] | select(.status != "OK")]}'
该命令会构造一个新的JSON对象,包含原数据的summary字段,以及仅保留状态非OK的checks条目数组;当没有符合条件的checks时,checks字段会显示为空数组,可满足核心需求。
内容的提问来源于stack exchange,提问作者Nick S
相关产品推荐
相关产品推荐

