加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在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调用名称修改,这可能不是您想要的.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读