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

如何用jq将curl返回的JSON数组作为API请求体的非字符串值?

解决jq传递JSON数组时被转义为字符串的问题

问题核心是你用了--arg参数,它本来就是用来传递纯字符串的,所以JSON数组会被当成普通字符串转义处理。要传递原生JSON结构,得用jq专门的--argjson参数,或者直接通过管道传递数据。

下面是两种可行的方法:

方法1:先存变量再用--argjson传入

先把curl获取到的JSON数组存到变量里,再用--argjson把变量作为JSON数据传给jq:

# 先获取JSON数组
array_result=$(curl "你的API地址")

# 构造新的JSON请求体,把数组作为"items"字段的值
jq --argjson items "$array_result" '{
  "request_type": "batch",
  "items": $items
}'

方法2:直接用管道传递(更简洁)

不需要中间变量,直接把curl的输出传给jq,让jq直接处理原生数组:

curl "你的API地址" | jq '{
  "request_type": "batch",
  "items": .
}'

这里的.代表jq接收到的原始输入(也就是curl返回的JSON数组),直接把它赋值给新JSON的items字段,自然就是原生数组格式,不会有转义问题。

简单总结:

  • --arg → 传字符串,会转义JSON结构
  • --argjson → 传JSON数据,保留原结构
  • 管道直接传递 → 省去变量存储,更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:37:35