Python API调用失败,因为json中有额外的转义字符
我正在尝试对本地运行的服务进行API调用。该服务希望post具有如下json数据:Python API调用失败,因为json中有额外的转义字符,python,json,python-3.x,python-2.7,Python,Json,Python 3.x,Python 2.7,我正在尝试对本地运行的服务进行API调用。该服务希望post具有如下json数据: {"tool" : "name", "version" : "1", "payload" : "{"branch" : "main"}" 所有这些都是一个类的成员,其中变量都是字符串(工具、版本和负载),我用相应的字符串初始化它们:“name”、“version”和“{\“branch\”:\“main\”}” 现在,当我使用json.dumps(self.\uu dict\uuu)转储类变量时,我得到以下js
{"tool" : "name", "version" : "1", "payload" : "{"branch" : "main"}"
所有这些都是一个类的成员,其中变量都是字符串(工具、版本和负载),我用相应的字符串初始化它们:“name”、“version”和“{\“branch\”:\“main\”}”
现在,当我使用json.dumps(self.\uu dict\uuu)
转储类变量时,我得到以下json,我将其发送到我的api调用:
json_upload = {"tool" : "name", "version" : "1", "payload" : "{\\"branch\\" : \\"main\\"}"
我添加了一行
json\u upload.replace(“\\\\”,“\\”)
,但是每次API调用失败时,我看到发送到API端点的数据都有双转义字符。这真是令人沮丧,因为我不知道如何去掉多余的“\\\”
。我该如何解决这个问题?我使用标准库json进行编码 数据似乎逃逸了两次
现在,当我使用json.dumps(self.dict)转储类变量时,我得到以下json,并将其发送到我的api调用:
json_upload = {"tool" : "name", "version" : "1", "payload" : "{\\"branch\\" : \\"main\\"}"
您正在使用哪个客户端库?e、 g.使用请求
只需传递对象,它就会转换为JSON:
r = requests.post('http://example.com/post', json={"key": "value"})
如果给它一个字符串,它将转义该字符串。数据似乎转义了两次 现在,当我使用json.dumps(self.dict)转储类变量时,我得到以下json,并将其发送到我的api调用:
json_upload = {"tool" : "name", "version" : "1", "payload" : "{\\"branch\\" : \\"main\\"}"
您正在使用哪个客户端库?e、 g.使用请求
只需传递对象,它就会转换为JSON:
r = requests.post('http://example.com/post', json={"key": "value"})
如果您给它一个字符串,它将转义字符串。您是否尝试过
json\u upload={“工具”:“名称”,“版本”:“1”,“有效负载”:“{”branch:“main”}”
(使用单引号表示有效负载
值)?服务器期望的不是有效的json。@pault我刚刚尝试过。相同的结果。API以415拒绝它。如果我删除多余的转义字符并通过curl发送相同的数据,它会接受它。您是否尝试过json_upload={“工具”:“名称”,“版本”:“1”,“负载”:“{”分支“:“主”}”
(对有效负载值使用单引号)?服务器期望的不是有效的json。@pault我刚刚尝试过。结果相同。API用415拒绝了它。如果我删除额外的转义字符并通过curl发送相同的数据,它会接受它。