Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python API调用失败,因为json中有额外的转义字符_Python_Json_Python 3.x_Python 2.7 - Fatal编程技术网

Python API调用失败,因为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

我正在尝试对本地运行的服务进行API调用。该服务希望post具有如下json数据:

{"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发送相同的数据,它会接受它。