我有一个自定义类 Passport,其中包含活动用户身份和权限。我曾经将它存储在会话中,如下所示:
p = Passport()
p.do_something_fancy()
session["passport"] = p
它就奏效了。现在,服务器升级后,我收到此错误:
TypeError: <userman.Passport instance at 0x7f06e9356f38> is not JSON serializable
我猜想它与 Flask 中的一些升级有关,这些升级现在要求对象可以 JSON 序列化才能存储在会话中。但是如何正确地使对象可 JSON 序列化呢?也许我必须提供一种序列化方法和反序列化方法,以便在再次加载对象时恢复对象状态?
你必须创建一个自定义的JSONEncoder
class 并告诉 Flask 使用它进行 JSON 序列化/反序列化。
以下是它的大致工作原理:
from flask.json import JSONEncoder
class CustomJSONEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, Passport):
# Implement code to convert Passport object to a dict
return passport_dict
else:
JSONEncoder.default(self, obj)
# Now tell Flask to use the custom class
app.json_encoder = CustomJSONEncoder
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)