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

如何使用jq按指定字段分组JSON并聚合subject为数组

用jq实现按多字段分组并聚合字段值为数组

你可以直接使用jq内置的group_by函数完成分组聚合逻辑,具体命令如下:

jq 'group_by(.first, .last, .roll) | map({first: .[0].first, last: .[0].last, roll: .[0].roll, subject: map(.subject)})'

逻辑说明

  • 第一步group_by(.first, .last, .roll):将输入的JSON数组按指定的三个字段值分组,相同值的元素会被放到同一个子数组中,最终输出分组后的二维数组。
  • 第二步map(...)遍历每个分组子数组,生成目标结构的对象:
    • 同组内所有元素的first、last、roll字段值完全一致,直接取第一个元素的对应值即可
    • 用map(.subject)提取当前分组下所有元素的subject字段,拼接为数组作为新对象的subject值

如果需要对聚合后的subject数组去重,可以将命令调整为:

jq 'group_by(.first, .last, .roll) | map({first: .[0].first, last: .[0].last, roll: .[0].roll, subject: map(.subject) | unique})'

内容的提问来源于stack exchange,提问作者Brahan K V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:27:02