gpt4 book ai didi

python - JSONS在Python中加载带有继承的复杂对象

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:17 25 4
gpt4 key购买 nike

我创建了一个字典,其中包含一个字符串键和一些类作为值。现在我想用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 — The Python Way

关于python - JSONS在Python中加载带有继承的复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59170488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com