【问题标题】:Flask: Cannot Decode Incoming JSON Submitted Using RequestsFlask:无法解码使用请求提交的传入 JSON
【发布时间】:2015-07-05 14:07:00
【问题描述】:

我在尝试解码作为 json 发送到我的服务器的 python 字典时遇到问题。 这就是我的应用程序中的内容:

payload = {'status':[bathroomId,item,percentage,timestamp]}
r=requests.post(url,None,json.dumps(payload))

这是我在 Flask 服务器中所做的:

req = request.get_json()
print req['status']

当我尝试打印req['status'] 的内容时,python 似乎无法将其识别为字典,并且出现内部服务器错误。

我尝试打印req,得到None

我错过了什么?

【问题讨论】:

  • 我试过了,还是不行

标签: python json dictionary flask


【解决方案1】:

除非您在请求中将Content-Type 标头设置为application/json,否则Flask 不会尝试解码在您的请求正文中找到的任何JSON

相反,get_json 将返回 None(这是您现在看到的)。

因此,您需要在请求中设置Content-Type 标头。

幸运的是since version 2.4.2 (released a year ago),requests 有一个辅助参数来发布 JSON;这将为您设置正确的标题。使用:

requests.post(url, json=payload)

或者(例如,使用请求

requests.post(url, data=json.dumps(payload), headers={"Content-Type": "application/json"})

这是来自 Flask 的相关代码:

【讨论】:

  • @AlessandroGaballo 您是否无法使用json=...?如果是这样,您可能需要升级 requests:2.4.2 已经一岁了。
猜你喜欢
  • 2022-07-11
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多