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

如何正确构造带反斜杠转义的字典作为REST API POST请求体

构造含转义反斜杠的REST API POST请求体方案
  • 错误本质:手动叠加反斜杠转义的写法,混淆了Python原生字符串转义、JSON序列化自动转义两层独立逻辑,要么触发语法错误,要么出现转义过度/不足的问题。
  • 最优实现:完全不需要手动书写反斜杠转义,借助Python标准库json自动完成转义处理,从根源规避手写错误。

参考实现代码:

import json
import requests

# 先构造payload对应的原生字典,无需任何转义处理
payload_content = {"value": 42}

# 组装完整请求体结构
request_body = {
    "packet": {
        "payload_encoding": "json",
        # json.dumps会自动将字典转为符合JSON规范的字符串,内部双引号的转义反斜杠会自动添加
        "payload": json.dumps(payload_content),
        "transceived_at": "2017-07-31T12:15:18.289981Z"
    }
}

# 发送POST请求时直接将构造好的字典传入json参数,requests库会自动完成最终的JSON序列化,转义逻辑完全符合规范
response = requests.post("目标API地址", json=request_body)

之前尝试的写法问题说明

  • r"\":属于Python语法错误,原始字符串不允许以奇数个反斜杠结尾,代码无法正常运行
  • \\\\:属于转义过度,最终序列化生成的请求体会携带多余反斜杠,不符合接口格式要求
  • "\\\":存在两处错误,一是字符串引号未闭合触发语法错误,二是转义层数计算错误,输出结果无法匹配预期

效果验证

执行以下代码可以直接打印序列化后的最终请求体,输出和目标结构完全一致(标准JSON会自动移除字段末尾多余的逗号,属于合法格式):

import json

payload_content = {"value": 42}
request_body = {
    "packet": {
        "payload_encoding": "json",
        "payload": json.dumps(payload_content),
        "transceived_at": "2017-07-31T12:15:18.289981Z"
    }
}

print(json.dumps(request_body, indent=4))

打印输出结果:

{
    "packet": {
        "payload_encoding": "json",
        "payload": "{\"value\": 42}",
        "transceived_at": "2017-07-31T12:15:18.289981Z"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:36:24