首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何阻止Python的请求库去掉转义字符?

如何阻止Python的请求库去掉转义字符?
EN

Stack Overflow用户
提问于 2016-01-27 22:56:27
回答 2查看 7.7K关注 0票数 3

我收到了如下所示的JSON块(为简洁而编辑):

代码语言:javascript
运行
复制
... "actions": [{"script": \"{\"inputs\": [], <LOTS MORE JSON>}"}]"

本质上,它是嵌套在另一个对象中的字符串。

当我使用Chrome中的高级Rest客户机将这个JSON发送到我的Node.js API时,它就成功了。但是,当我使用这个Python代码发送它时:

代码语言:javascript
运行
复制
headers={'content-type': 'application/json'}
newrsp = self.session.post("http://my-api", data=str(my_json), headers=headers)

我收到

代码语言:javascript
运行
复制
SyntaxError: Unexpected token i

在调用JSON.parse之前查看主体,看起来我的有效负载已经被修改了。而不是这样:

代码语言:javascript
运行
复制
... "actions": [{"script": \"{\"inputs\": [], <LOTS MORE JSON>}"}]"''

看起来是这样的:

代码语言:javascript
运行
复制
... "actions": [{"script": "{"inputs": [], <LOTS MORE JSON>}"}]"

从其他程序调用我的API是有效的,不会删除转义字符,所以我很有信心它不是我的代码,但是请求API在发送我的JSON之前正在以某种方式去掉字符。

我一点也不是毕多诺人.任何Python用户都知道发生了什么(希望我能告诉请求不要这样做)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-28 19:25:48

我要回答我自己的问题,万一有人有类似的问题.

看起来请求API有一些自动转换例程,从不需要JSON转义字符的元素中剥离JSON转义字符。最后,在组装整个长字符串之前,我在JSON块上调用了json.dumps (并在传递到请求时再次调用json.dumps )。这实际上是“双重编码”它,所以当请求删除转义字符时,它就会以我想要的方式离开它。

票数 3
EN

Stack Overflow用户

发布于 2017-11-25 23:15:15

如果您使用参数"data“,您应该自己转换JSON:

代码语言:javascript
运行
复制
jsonItem = json.dumps(dict(item))
req = requests.post('http://...', data=jsonItem)

如果使用参数"json“,则委托转换:

代码语言:javascript
运行
复制
req = requests.post('http://...', json=dict(item))
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35049736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档