如何在 Python 中访问对象的对象作为 JSON?
How to access Object of Objects as JSON in Python?
我有 3 个类。
Class A:
def __init__(self,a1,a2,a3)
self.a1 = 10
self.a2 = B()
self.a3 =20
Class B:
def __init__(self,b1,b2,b3)
self.b1 = C()
self.b2 = 30
self.b3 = 40
Class C:
def __init__(self,c1,c2,c3):
self.c1 = 50
self.c2 = 60
self.c3 = 70
输入 = [xxx 处的对象 A]
我想获取对象中的所有详细信息作为输出。
输出应该是 [{a1:10,a2:{b1: {c1:50, c2:60, c3: 70}, b2:30, b3:40}, a3: 20}]
我试过这种方法,但是很忙。
for each in input[0].__dict__:
for x in each.__dict__:
有什么解决办法吗?当然 - 没有“ValueError:检测到循环引用”。
在这种情况下,您可能有兴趣使用 dataclass
from dataclasses import dataclass
@dataclass
class C:
c1: int
c2: int
c3: int
@dataclass
class B:
b1: C
b2: int
b3: int
@dataclass
class A:
a1: int
a2: B
a3: int
然后举例
>>> c = C(50, 60, 70)
>>> b = B(c, 30, 40)
>>> a = A(10, b, 20)
>>> a
A(a1=10, a2=B(b1=C(c1=50, c2=60, c3=70), b2=30, b3=40), a3=20)
鉴于此对象层次结构,您可以使用方法
转换为字典
>>> import dataclasses
>>> dataclasses.asdict(a)
{'a1': 10, 'a2': {'b1': {'c1': 50, 'c2': 60, 'c3': 70}, 'b2': 30, 'b3': 40}, 'a3': 20}
最后得到一个有效的json字符串
>>> import json
>>> json.dumps(dataclasses.asdict(a))
'{"a1": 10, "a2": {"b1": {"c1": 50, "c2": 60, "c3": 70}, "b2": 30, "b3": 40}, "a3": 20}'
我有 3 个类。
Class A:
def __init__(self,a1,a2,a3)
self.a1 = 10
self.a2 = B()
self.a3 =20
Class B:
def __init__(self,b1,b2,b3)
self.b1 = C()
self.b2 = 30
self.b3 = 40
Class C:
def __init__(self,c1,c2,c3):
self.c1 = 50
self.c2 = 60
self.c3 = 70
输入 = [xxx 处的对象 A]
我想获取对象中的所有详细信息作为输出。
输出应该是 [{a1:10,a2:{b1: {c1:50, c2:60, c3: 70}, b2:30, b3:40}, a3: 20}]
我试过这种方法,但是很忙。
for each in input[0].__dict__:
for x in each.__dict__:
有什么解决办法吗?当然 - 没有“ValueError:检测到循环引用”。
在这种情况下,您可能有兴趣使用 dataclass
from dataclasses import dataclass
@dataclass
class C:
c1: int
c2: int
c3: int
@dataclass
class B:
b1: C
b2: int
b3: int
@dataclass
class A:
a1: int
a2: B
a3: int
然后举例
>>> c = C(50, 60, 70)
>>> b = B(c, 30, 40)
>>> a = A(10, b, 20)
>>> a
A(a1=10, a2=B(b1=C(c1=50, c2=60, c3=70), b2=30, b3=40), a3=20)
鉴于此对象层次结构,您可以使用方法
>>> import dataclasses
>>> dataclasses.asdict(a)
{'a1': 10, 'a2': {'b1': {'c1': 50, 'c2': 60, 'c3': 70}, 'b2': 30, 'b3': 40}, 'a3': 20}
最后得到一个有效的json字符串
>>> import json
>>> json.dumps(dataclasses.asdict(a))
'{"a1": 10, "a2": {"b1": {"c1": 50, "c2": 60, "c3": 70}, "b2": 30, "b3": 40}, "a3": 20}'