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

GraphQL查询以JSON请求执行时失败

问题解决:JSON请求执行GraphQL查询报400错误

问题出在JSON字符串的双引号转义处理上。当把GraphQL查询放在JSON的query字段中时,查询字符串内部的所有双引号都需要双重转义——因为JSON本身用双引号包裹字符串,所以字符串里的双引号要先用反斜杠转义;而GraphQL查询的参数值又需要双引号,因此得再加一层转义,最终用\\"来表示原查询里的双引号。

你的原代码中,after参数的cursor值解码后包含双引号(解码结果:{"last_id":4359983267893,"last_value":"2022-05-23 10:37:23.000000"}),但仅做了单层转义,导致JSON解析器无法正确识别格式,从而返回400错误。

修正后的代码

{
  "query": "query{ orders(first: 3, after: \\\"eyJsYXN0X2lkIjo0MzU5OTgzMjY3ODkzLCJsYXN0X3ZhbHVlIjoiMjAyMi0wNS0yMyAxMDozNzoyMy4wMDAwMDAifQ==\\\") { edges { cursor node { id name legacyResourceId email createdAt processedAt totalPriceSet { shopMoney { amount currencyCode } } totalDiscountsSet { shopMoney { amount currencyCode } } totalRefundedSet { shopMoney { amount currencyCode } } subtotalLineItemsQuantity test } } }}"
}

更简洁的替代方案

如果觉得手动转义麻烦,可以把GraphQL查询的参数单独抽出来放在variables字段中,彻底避免转义操作:

{
  "query": "query($first: Int!, $after: String) { orders(first: $first, after: $after) { edges { cursor node { id name legacyResourceId email createdAt processedAt totalPriceSet { shopMoney { amount currencyCode } } totalDiscountsSet { shopMoney { amount currencyCode } } totalRefundedSet { shopMoney { amount currencyCode } } subtotalLineItemsQuantity test } } }",
  "variables": {
    "first": 3,
    "after": "eyJsYXN0X2lkIjo0MzU5OTgzMjY3ODkzLCJsYXN0X3ZhbHVlIjoiMjAyMi0wNS0yMyAxMDozNzoyMy4wMDAwMDAifQ=="
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:10:30