You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jq筛选demographic数组中同对象满足双条件的JSON数据?

问题:筛选JSON数组中同一对象同时满足双条件的条目

示例输入JSON:

{"id": "3DFD4GF", "demographic": [{"country": "Spain", "rating": 7},{"country": "Germany", "rating": 2}]}

需求:筛选出demographic数组中存在同一对象同时满足country为"Canada"且rating为10的JSON条目。

之前尝试的jq语句:

jq 'select((.demographic[].country=="Canada") and .demographic[].rating==10)' json

该语句的问题是:会匹配数组中任意两个不同对象分别满足单个条件的情况,无法实现同一对象同时满足双条件的需求。

期望输出示例:

{"id": "454FGF6", "demographic": [{"country": "Germany", "rating": 4},{"country": "Canada", "rating": 10}]}

解决方法

使用jq的any函数结合对象内的复合条件判断,确保是同一对象同时满足两个要求:

jq 'select(any(.demographic[]; .country == "Canada" and .rating == 10))' json

原理说明

  • .demographic[]遍历数组中的每个对象
  • any(;)函数检查是否存在至少一个对象满足后面的复合条件.country == "Canada" and .rating == 10
  • 这样就能保证是同一个对象同时符合两个条件,而非数组中不同对象分别满足单个条件

内容的提问来源于stack exchange,提问作者Wiseface

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:12:04