最佳答案
3.7中的标准库可以递归地将一个数据类转换成一个 dict (来自文档的例子) :
from dataclasses import dataclass, asdict
from typing import List
@dataclass
class Point:
x: int
y: int
@dataclass
class C:
mylist: List[Point]
p = Point(10, 20)
assert asdict(p) == {'x': 10, 'y': 20}
c = C([Point(0, 0), Point(10, 4)])
tmp = {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]}
assert asdict(c) == tmp
我正在寻找一种方法,以便在有嵌套的情况下将 dict 转换回数据类。类似 C(**tmp)
的东西只有在数据类的字段是简单类型而不是本身是数据类的情况下才有效。我熟悉 Jsonpickle,但是它有一个显著的安全警告。
编辑:
答案建议使用以下图书馆: