Python json.dumps转义字符异常导致GraphQL API请求失败如何解决?
问题根因
你看到的\\n属于双重转义的结果,本质不是json.dumps的逻辑出问题,而是你存入ED_Query字典的query字段本身就包含字面量的\和n两个字符,而非实际的换行符\n。json.dumps会自动对字符串里的\做转义,最终就变成了JSON里的\\n,传到服务端无法被识别为换行,自然会提示查询格式错误。
可能的改动点
- 你修改了
query字符串的定义方式:之前你是用Python三重引号定义多行原生字符串,比如:
query_content = """query InstrumentRefData($ObjectList: [String!]) { EDFInstrument(objectIds: $ObjectList) { ObjectId Reference { AssetClassId } } }"""
这种写法里的换行是实际的\n字符,转成JSON后是符合要求的。如果你改成了直接复制带显式转义的单行字符串(比如从之前打印的JSON结果里直接复制query内容赋值),字符串里就会存字面量的\n,触发双重转义。
- 你新增了多余的转义步骤:比如先单独对
query字符串做了一次json.dumps,把处理后的结果再存入ED_Query,最后对整个字典再做一次json.dumps,相当于连续转义了两次。 - 你修改了
query的来源:之前是直接在代码里写死的字符串,现在改成了从外部文件/接口读取内容,而读取到的内容本身就已经是转义过的\\n。
验证方法
调用json.dumps之前,先执行print(repr(ED_Query['query'])),如果输出结果里出现\\n,就说明你的query字符串本身就已经有多余的转义字符,和后续的JSON序列化逻辑无关。
内容的提问来源于stack exchange,提问作者Paul_G
相关产品推荐
相关产品推荐

