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

使用jq处理JSON时如何输出无groups键的对象并避免重复

你的命令存在两个问题根源:

  1. 开头的map(select(.groups[].id)?)首先会过滤掉没有groups字段的对象,所以u1直接被丢掉了
  2. .groups[]是展开数组操作,当groups有N个元素时,就会生成N条相同的上游对象副本,所以u2有2个group就输出了2次重复行

修改后的正确命令如下:

jq -r '.[] | [.user, .id, (.groups | if . then map(.name) | join(",") else "-" end)] | join("\t")' 你的json文件路径

逻辑说明:

  • 直接用.[]遍历所有用户对象,不做提前过滤,保留u1这类无groups的记录
  • 对第三个字段做条件判断:如果当前对象存在groups,就提取所有name字段用逗号拼接;不存在就输出短横线占位
  • 每一个对象直接拼接为制表符分隔的行输出,不需要额外合并操作

执行后输出完全符合你的预期:

u1      0001    -
u2      0002    G1,G2
u3      0003    G1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:45:03