由于json中的其他转义字符,API调用失败

时间:2018-01-18 23:31:09

标签: python json python-3.x python-2.7

我正在尝试对本地运行的服务进行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调用都失败时,我看到发送到api端点的数据有双重转义字符。这真是令人沮丧,因为我不明白如何去除额外的"\\"。我该如何解决?我正在使用标准库json进行编码。

1 个答案:

答案 0 :(得分:3)

似乎数据被转义两次。

  

现在当我使用json.dumps(self。 dict )转储类变量时,我得到了json,我发送给我的api调用:

您使用的是哪个客户端库?例如使用requests,您只需传递对象,它将转换为JSON:

r = requests.post('http://example.com/post', json={"key": "value"})

如果你给它一个字符串,它将转义字符串。