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

向API发送JSON对象时出现解码失败错误求助

问题分析与解决方案

你的curl命令中,-d参数的引号使用错误,导致发送的JSON格式无效,API无法正确解码。

错误原因

原命令中-d后面多了一个开头的双引号:

-d '"{data1":"'"$data1"'", "data2": "'"$data2"'", "data3": "'"$data3"'", "data4": "'"$data4"'"}'

这会让发送的内容变成外层包裹双引号的字符串(比如"{data1:"value1", ...}"),而非合法的JSON对象,同时内部引号结构混乱,触发解析错误。

修正方案

方案1:直接修正引号格式

去掉-d参数开头的多余双引号,确保JSON结构正确:

curl -XPOST http://localhost:4000/create \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"data1":"'"$data1"'", "data2":"'"$data2"'", "data3":"'"$data3"'", "data4":"'"$data4"'"}'

方案2:用printf构建JSON(更易维护)

通过printf格式化JSON字符串,避免引号拼接混乱:

curl -XPOST http://localhost:4000/create \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "$(printf '{"data1":"%s", "data2":"%s", "data3":"%s", "data4":"%s"}' "$data1" "$data2" "$data3" "$data4")"

方案3:用jq生成合法JSON(处理特殊字符)

如果变量中包含双引号、反斜杠等特殊字符,推荐用jq自动转义,确保JSON完全合法:

curl -XPOST http://localhost:4000/create \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "$(jq -n --arg d1 "$data1" --arg d2 "$data2" --arg d3 "$data3" --arg d4 "$data4" '{data1: $d1, data2: $d2, data3: $d3, data4: $d4}')"

以上三种方案都能让你发送合法的JSON对象,API即可正常解析并返回基于变量的JSON响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:27:13