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

使用jq按orgs数组值查询收件人时出现包含检查错误如何解决

问题原因

你遇到的报错是因为 jq 的 contains 函数对输入类型有匹配要求:当左侧操作数是数组时,右侧也必须传入数组(用来判断左侧数组是否完全包含右侧数组的所有元素),你直接传入字符串 "Service A" 就触发了类型不匹配的错误。

解决方案

完全可以用 jq 实现你的需求,推荐两种常用写法:

写法1:用index函数快速判断

index可以直接检查数组中是否存在指定元素,存在就返回对应的下标,不存在返回null,命令如下:

cat /path/to/file.json | jq '.groups[] | select(.orgs | index("Service A") != null) | .recipients[]'

写法2:用any函数做精确匹配(更严谨)

如果要避免index的模糊匹配问题(比如元素包含特殊字符的场景),用any遍历数组判断更稳妥:

cat /path/to/file.json | jq '.groups[] | select(any(.orgs[]; . == "Service A")) | .recipients[]'

执行输出

两种写法执行后都会返回你要的结果:

{
  "name": "Jane Bloggs",
  "email": "jane.bloggs@business.org"
}

如果你只需要单独提取邮箱或者姓名,后面再加对应的字段即可,比如要输出邮箱字符串,就改成:

cat /path/to/file.json | jq -r '.groups[] | select(any(.orgs[]; . == "Service A")) | .recipients[].email'

输出就是纯文本的 jane.bloggs@business.org


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:45:05