我在尝试解码以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
我错过了什么?
答案 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的相关代码:
is_json
is True
(或者如果您将force=True
传递给get_json
)。否则,它返回None
。is_json
looks at the Content-Type
header,并在那里寻找application/json
。