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

使用curl带--data-raw发送JSON报Unexpected character错误如何解决

问题根因

你传入--data-raw的内容是原生GraphQL查询语句,并非接口要求的JSON结构。当你指定Content-Type: application/json时,服务端会将请求体当做JSON解析,原生GraphQL查询语句不符合JSON语法规范,因此抛出「期望双引号开头的字段名」错误。你之前校验时应该是把GraphQL查询语句单独校验了,没有按照接口要求的JSON结构封装,才会误以为内容合法。

解决方案

GraphQL的POST请求需要将查询语句封装在JSON的query字段中,macOS/Linux环境下可直接使用下方修改后的curl命令:

curl --request POST "https://app.io/api/graphql?accountId=Xzg" \
--header "x-api-key: WHpnV=" \
--header "Content-Type: application/json" \
--data-raw '{"query": "{applications(limit: 2) {nodes {name}}}"}'
特殊场景适配
  • 如果你的查询包含变量,可在JSON中新增variables字段传递参数,请求体结构示例如下:
{
  "query": "query getApps($limit: Int!) {applications(limit: $limit) {nodes {name}}}",
  "variables": {"limit": 2}
}
  • Windows cmd环境执行时不支持单引号包裹请求体,需要将单引号替换为双引号,同时转义内部的双引号:
curl --request POST "https://app.io/api/graphql?accountId=Xzg" --header "x-api-key: WHpnV=" --header "Content-Type: application/json" --data-raw "{\"query\": \"{applications(limit: 2) {nodes {name}}}\"}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:45:05