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

能否将一个curl的JSON输出流式传入另一个curl的data参数?

需求可行,但你的命令存在格式问题

首先明确:将第一个curl的JSON输出流式传入第二个curl的data参数是完全可行的,你遇到400错误是因为中间jq处理后的输出格式不符合后端要求。

问题根源分析

你用jq '.[] | select(.query|test("latency")) | @json'处理后,输出的是一个被双引号包裹的JSON字符串(比如你看到的"{\"query\":\"origin...\"}"),而第二个curl需要提交的是原始JSON对象,不是字符串形式的JSON。当你手动传入时,其实是把这个字符串里的转义引号还原后直接作为JSON对象提交;但管道传递时,整个带外层引号的字符串被后端当成了无效的JSON结构,导致解析失败(也就是HttpMessageNotReadableException的触发原因)。

修复后的命令

把jq命令里的@json去掉,直接输出筛选后的JSON对象即可:

curl -sG api.com/test -H "Authorization: Bearer ${token}" | jq '.[] | select(.query|test("latency"))' | curl -d @- -H "Authorization: Bearer ${token}" -H "Content-Type: application/json" "api.com/test"

额外优化说明

如果需要修改输出JSON里的字段(比如你手动调整的threshold值),可以直接在jq里完成处理,一步实现筛选、修改和传递:

curl -sG api.com/test -H "Authorization: Bearer ${token}" | jq '.[] | select(.query|test("latency")) | .threshold.critical=20000 | .threshold.warning=15000' | curl -d @- -H "Authorization: Bearer ${token}" -H "Content-Type: application/json" "api.com/test"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:38:58