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

如何使用jq将多行JSON消息转换为分组数组?

将单行JSON对象按每两个分组为JSON数组的jq命令

需求场景

消息生成器./messages.sh的输出是每行一个独立的JSON对象,格式如下:

$ ./messages.sh
{"a":"v1"}
{"b":"v2"}
{"c":"v3"}
{"d":"v4"}
...

需要用jq将这些单行JSON对象按每两个一组,打包成JSON数组输出,最终效果如下:

$ ./messages.sh | jq [命令]
[{"a":"v1"},{"b":"v2"}]
[{"c":"v3"},{"d":"v4"}]
...

实现命令

直接使用以下jq命令即可完成分组:

jq -n 'repeat([input, input])'

命令解释

  • -n参数:让jq不自动读取全部输入,而是通过input函数逐个读取,适配流式输出的场景(比如消息生成器持续输出的情况)
  • repeat([input, input]):循环执行括号内的逻辑,每次读取两个输入的JSON对象,将它们组合成数组后输出

如果需要处理输入对象数量为奇数的情况(最后剩下单个对象),可以使用下面的命令,确保最后单个对象也会被包装成数组输出:

jq -n 'def get_pair: (input // empty) as $first | [$first, (input // $first)]; repeat(get_pair)'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:01:57