Flask:无法解码使用请求提交的传入JSON

时间:2015-07-05 14:07:00

标签: python json dictionary flask

我在尝试解码以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

我错过了什么?

1 个答案:

答案 0 :(得分:2)

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

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

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

幸运的是since version 2.4.2 (released a year ago),请求有一个帮助器参数来发布JSON;这将为您设置合适的标题。使用:

requests.post(url, json=payload)

或者(例如使用请求< 2.4.2),您可以自己设置标题:

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

以下是Flask的相关代码: