【发布时间】:2020-05-24 08:02:45
【问题描述】:
在一个项目中,我必须为某种实体输出 json 文件。所以这个问题在某种程度上是我问题的简化版本。想象一下,我得到了这些类,我需要它们的 dict 属性和属性作为 json 输出:
from random import randint
class A:
def __init__(self, a, b):
self.a = a
self.b = b
def out_dict(self):
return self.__dict__
class B:
def __init__(self, B_a, list_of_A):
self.b_arg = B_a
self.list_of_A = list_of_A
def out_dict(self):
return self.__dict__
class C:
def __init__(self, C_a, list_of_B):
self.c_arg = C_a
self.list_of_B = list_of_B
def out_dict(self):
return self.__dict__
list_of_A = [A(randint(0,100), randint(0,100)) for _ in range(5)]
list_of_B = [B(5, list_of_A) for _ in range(3)]
c = C(10, list_of_B)
print(c.out_dict())
上面代码的输出是:
{'c_arg': 10,
'list_of_B': [<__main__.B at 0x207613625c0>,
<__main__.B at 0x2076110bdd8>,
如您所见,对象是嵌套的,输出并没有详细提及类的所有属性。另一方面,我需要一些这样的输出:
{"C":
{"list_of_B":[
"B0": {
{"list_of_A":
{["0":{"a":10, "b":21}, "2":{"a":1, "b":3},
"1":{"a":10, "b":21}, "2":{"a":54, "b":12},
"2":{"a":10, "b":21}, "2":{"a":12, "b":32},
]}
"b_arg": 27
}
},
"B1": {
{"list_of_A":
{["0":{"a":10, "b":21}, "2":{"a":1, "b":3},
"1":{"a":10, "b":21}, "2":{"a":54, "b":12},
"2":{"a":10, "b":21}, "2":{"a":12, "b":32},
]}
"b_arg": 27
}
},
]
"c_arg": 95
}
}
在这种情况下如何获取检索详细信息。?
我需要将它们输出为 json。
谢谢
【问题讨论】:
-
对于
out_dict()中的每个对象,您需要递归获取相应的out_dict()。