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

如何使用jq的--stream选项实现与非流模式一致的单行单个JSON对象输出?

如何使用jq的--stream选项实现与非流模式一致的单行单个JSON对象输出?

我太懂这种差一步就摸到答案的憋屈感了!你已经把流处理的核心逻辑搞对了,就差最后一步把组装好的数组拆成单个对象输出~

你当前的命令用fromstream把符合条件的流重新组装成了完整的results数组,所以输出是一个包含两个元素的数组。要得到和非流模式一样的单行单个JSON对象,只需要在命令最后加上[],遍历这个数组的每一个元素就行。

修改后的完整命令:

jq -rc --stream 'fromstream(1|truncate_stream(inputs | select(.[0][0] == "results")))[]' my_json.json

运行这个命令后,你就能得到和非流模式完全一致的输出:

{"data":[{"row":[{"key1":"row1","key2":"row1"}]},{"row":[{"key1":"row2","key2":"row2"}]}]}
{"data":[{"row":[{"key1":"row3","key2":"row3"}]},{"row":[{"key1":"row4","key2":"row4"}]}]}

简单解释下这个改动:fromstream(...)返回的是整个results数组,后面加的[]会把数组展开,将每个元素单独输出,正好契合你想要的“一行一个JSON对象”的格式。

备注:内容来源于stack exchange,提问作者fsumathguy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:39:38