【发布时间】:2018-01-18 23:31:09
【问题描述】:
我正在尝试对本地运行的服务进行 API 调用。该服务期望 post 具有这样的 json 数据:
{"tool" : "name", "version" : "1", "payload" : "{"branch" : "main"}"
所有这些都是变量都是字符串(工具、版本和有效负载)的类的成员,我用各自的字符串初始化它们:"name", "version" and "{\"branch\" : \"main\"}"
现在,当我使用 json.dumps(self.__dict__) 转储类变量时,我得到以下 json,我将其发送到我的 api 调用:
json_upload = {"tool" : "name", "version" : "1", "payload" : "{\\"branch\\" : \\"main\\"}"
我添加了一行json_upload.replace("\\\\", "\\"),但每次 API 调用失败并显示 415 并且我看到发送到 api 端点的数据都有双转义字符。这真的很令人沮丧,因为我不明白如何去除额外的"\\"。我该如何解决?我正在使用标准库 json 进行编码。
【问题讨论】:
-
您是否尝试过
json_upload = {"tool" : "name", "version" : "1", "payload" : '{"branch" : "main"}'(payload值使用单引号)? -
服务器期望的不是有效的 json。
-
@pault 我刚试过。结果相同。 API 用 415 拒绝它。如果我删除那个额外的转义字符并通过 curl 发送相同的数据,它会接受它。
标签: python json python-3.x python-2.7