Django - 如何将JSON对象转换为字符串并将其作为有效载荷传递给request.post()?

4

我在Django视图中有以下代码:

headers = {'Authorization': "key=AAAA7oE3Mj...",
               'Content-type': 'application/json'}
token  = "dJahuaU2p68:A..."
payload = {"data": {}, "to": user_web_tokens}
url = "https://..."
r = requests.post(url, data=payload, headers=headers)

问题在于响应以400错误终止,并显示以下错误消息:
JSON_PARSING_ERROR: 在位置0处有意外字符(t)
如果我传递的是字符串而不是JSON: payload = {"data": {}, "to": user_web_tokens}
...我会得到稍微不同的错误:
JSON_PARSING_ERROR: 在位置19处有意外字符(u)。
我看到一篇文章中说,json对象在作为有效载荷之前应该被字符串化。但我不知道如何在Django中实现这一点。这是否与序列化有关?请帮助我!

尝试过这个吗?import json; payload = json.dumps(payload) - Vidya Sagar
Requests库有一个专门用于JSON负载的参数:r = requests.post(url, json=payload, headers=headers) - Ashwini Chaudhary
1个回答

10

当您使用嵌套字典数据进行 post 时,可以使用 json.dumps 或者直接通过 json 参数传递。

import json
# ...
r = requests.post(url, data=json.dumps(payload), headers=headers)
# or
r = requests.post(url, json=payload, headers=headers)

参阅官方文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接