我在尝试解码以 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
我错过了什么?
最佳答案
除非您设置 Content-Type
标题为 application/json
在您的请求中,Flask 不会尝试解码在您的请求正文中找到的任何 JSON。
相反,get_json
将返回None
(这就是您现在所看到的)。
因此,您需要设置 Content-Type
您的请求中的 header 。
幸运的是since version 2.4.2 (released a year ago) , requests 有一个辅助参数来发布 JSON;这将为您设置正确的标题。使用:
requests.post(url, json=payload)
或者(例如使用请求 < 2.4.2),您可以自己设置 header :
requests.post(url, data=json.dumps(payload), headers={"Content-Type": "application/json"})
<小时/>
以下是 Flask 中的相关代码:
- flask only loads JSON if
is_json
isTrue
(或者如果您将force=True
传递给get_json
)。否则,它返回None
. -
is_json
looks at theContent-Type
header ,并查找application/json
在那里。
关于python - Flask:无法解码使用请求提交的传入 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31231188/