在Python中将自定义对象序列化为JSON的方法
发布时间:2020-12-20 12:31:17 所属栏目:Python 来源:网络整理
导读:通常,我们可以定义__str__方法使str(obj)返回我们想要的. 但是现在我想定义我的Model对象以在使用json.dumps(obj)时返回默认的JSON字符串. 有没有什么好方法可以在类中声明一个方法来执行此操作? class MyClass: ... def __json__(self): return {'name': s
通常,我们可以定义__str__方法使str(obj)返回我们想要的.
但是现在我想定义我的Model对象以在使用json.dumps(obj)时返回默认的JSON字符串. 有没有什么好方法可以在类中声明一个方法来执行此操作? class MyClass: ... def __json__(self): return {'name': self.name,'age': self.age} obj = MyClass() json.dumps(obj) # returns the same as json.dumps(obj.__json__) 解决方法
如果你只需要Python – > JSON,编写一个JSONEncoder类很简单,它为任何对象调用这样的方法:
class AutoJSONEncoder(JSONEncoder): def default(self,obj): try: return obj._json() except AttributeError: return JSONEncoder.default(self,obj) 然后,您可以直接使用该类AutoJSONEncoder().encode(obj)或通过转储接口json.dumps(obj,cls = AutoJSONEncoder). 反方向至少需要一个类列表,可以调用_fromjson方法. (注意:__foo__名称是保留的,因此您不应为自己的目的定义它们.__bar调用名称修改,这可能不是您想要的.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |