我正在尝试对本地运行的服务进行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进行编码。
答案 0 :(得分:3)
似乎数据被转义两次。
现在当我使用json.dumps(self。 dict )转储类变量时,我得到了json,我发送给我的api调用:
您使用的是哪个客户端库?例如使用requests
,您只需传递对象,它将转换为JSON:
r = requests.post('http://example.com/post', json={"key": "value"})
如果你给它一个字符串,它将转义字符串。