如何用jq判断JSON数组中是否存在指定属性的对象
使用jq检查JSON数组中是否存在指定对象
针对你提供的JSON数组,以下是几种用jq工具快速判断是否包含"login": "bar"对象的方法:
方法1:使用any()函数(推荐,最简洁)
any()函数会遍历数组元素,只要有一个元素满足指定条件就返回true,否则返回false。
执行命令:
jq 'any(.[]; .login == "bar")' input.json
或者从管道输入JSON:
cat input.json | jq 'any(.[]; .login == "bar")'
如果存在目标对象,输出结果为true;不存在则输出false。
方法2:过滤后判断结果长度
先筛选出所有login等于"bar"的对象,再通过判断结果数组的长度是否大于0来确定是否存在。
执行命令:
jq '[.[] | select(.login == "bar")] | length > 0' input.json
该命令会先生成匹配对象的数组,再返回长度是否大于0的布尔值,结果同样是true或false。
方法3:直接查看匹配结果
如果需要同时确认匹配对象的具体内容,可以直接筛选输出:
jq '.[] | select(.login == "bar")' input.json
如果存在目标对象,会输出对应的JSON对象;如果没有匹配结果,则无输出。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

