JSONS在python中通过继承加载复杂对象

耶胡达斯

我创建了一个包含字符串键和一些类作为值的字典。现在,我想使用json对其进行序列化和反序列化。

class A:
    def __init__(self, val):
        self.val = val


class B(A):
    def __init__(self, val, additional_val):
        super(B, self).__init__(val)
        self.additional_val= additional_val


class C(B):
    def __init__(self, val, additional_val, enabled):
        super(C, self).__init__(val, additional_val)
        self.enabled = enabled


my_dict = {'0': A(0), '1': B(5, 6), '2': C(7,8,True)}

现在我要序列化它。我发现用jsons进行序列化的最简单方法(使用python 3.6)。但是如何将它反序列化回原始对象呢?我发现的所有示例都是针对非常简单的对象(str,dict,list)的。

尝试这个:

import json
def convert_to_dict(obj):
"""
A function takes in a custom object and returns a dictionary representation of the object.
This dict representation includes meta data such as the object's module and class names.
"""

    #  Populate the dictionary with object meta data
    obj_dict = {
    "__class__": obj.__class__.__name__,
    "__module__": obj.__module__
}

    #  Populate the dictionary with object properties
    obj_dict.update(obj.__dict__)

    return obj_dict

my_dict = {'0': A(0), '1': B(5, 6), '2': C(7,8,True)}
mydict_dump = json.dumps(my_dict, default=convert_to_dict, indent=4, sort_keys=True)
final_result = json.loads(mydict_dump)

print(final_result)

您可以参考这篇中等文章以了解更多信息:

JSON-Python方式

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Web API-通过继承将JSON转换为复杂对象类型(DTO)

来自分类Dev

如何通过继承在python中对请求进行子类化

来自分类Dev

通过继承在python中创建自定义float类

来自分类Dev

通过继承类中的声明获取当前类

来自分类Dev

在C ++中通过继承自定义PyObject

来自分类Dev

通过继承类中的声明获取当前类

来自分类Dev

在JavaScript中通过继承递归构造序列/链接列表

来自分类Dev

在 yocto 中通过继承 rm_work 保持 rootfs

来自分类Dev

C#中通过继承捕获异常

来自分类Dev

使用构造函数重载并通过继承预先存在静态对象

来自分类Dev

通过继承连接类变量?

来自分类Dev

通过继承从类型获取属性值

来自分类Dev

通过继承扩展shared_ptr

来自分类Dev

通过继承实现AVL树

来自分类Dev

ObjectBox 无法通过继承构建项目

来自分类Dev

通过继承的类模板 SFINAE

来自分类Dev

React:通过继承调用父的方法

来自分类Dev

通过继承的静态方法创建继承类的新实例

来自分类Dev

在PostgreSQL 12中,如果查询包含在子表中,通过继承创建分区会提高查询性能吗?

来自分类Dev

通过继承设计具有共享功能的静态类

来自分类Dev

如何通过继承扩展django抽象基础模型?

来自分类Dev

C#:可以通过继承隐藏实现吗?

来自分类Dev

NSUUID可以通过继承进行扩展吗?如何?

来自分类Dev

C ++通过继承std :: exception创建新的异常

来自分类Dev

通过继承类的字段进行GORM分离查询

来自分类Dev

通过继承的运算符重载会导致歧义

来自分类Dev

html和CSS表通过继承变得错误的样式

来自分类Dev

Sonata-admin无法通过继承修改类

来自分类Dev

通过继承更好地设计Db的抽象

Related 相关文章

热门标签

归档