为了账号安全,请及时绑定邮箱和手机立即绑定

如何使JSON类可序列化

如何使JSON类可序列化

冉冉说 2019-06-05 13:52:38
如何使JSON类可序列化如何使Python类可序列化?一个简单的类:class FileItem:     def __init__(self, fname):         self.fname = fname我应该怎么做才能得到以下的输出:json.dumps()没有错误(FileItem instance at ... is not JSON serializable)
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

你对预期的产出有什么想法吗?这就行了吗?

>>> f  = FileItem("/foo/bar")>>> magic(f)'{"fname": "/foo/bar"}'

在这种情况下,您只需调用json.dumps(f.__dict__).

如果您想要更多的自定义输出,则必须将JSONEncoder并实现您自己的自定义序列化。

关于一个简单的例子,请参阅下面。

>>> from json import JSONEncoder>>> class MyEncoder(JSONEncoder):
        def default(self, o):
            return o.__dict__    

>>> MyEncoder().encode(f)'{"fname": "/foo/bar"}'

然后将这个类传递给json.dumps()方法AScls夸格:

json.dumps(cls=MyEncoder)

如果您还想解码,则必须提供一个自定义object_hookJSONDecoder班级,等级。例如:

>>> def from_json(json_object):
        if 'fname' in json_object:
            return FileItem(json_object['fname'])>>> f = JSONDecoder(object_hook = from_json).decode('{"fname": "/foo/bar"}')
            >>> f<__main__.FileItem object at 0x9337fac>>>>


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 689 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信