我一直在网上搜索,但在python中找不到使用JSON编码和解码自定义对象的简单示例。
假设我有以下课程:
class Test:
def __init__(self, name=None, grade=None):
self.name = name
self.grade = grade
并且还有一个Test对象列表:
t1 = Test("course1", 80)
t2 = Test("course2", 90)
list_of_tests = [t1, t2]
如何序列化类
Test
和对象list_of_tests
使用JSON?我希望能够将它写入文件并使用python从文件中读取。
答案 0 :(得分:0)
您可以控制转储序列化无法识别的对象的方式(默认值= converter_function)。为了使它成为有效的JSON,你必须返回一个包含你想要的字段的简单字典,还有一些标记字段,用于标识它将被加载专门处理。
然后有另一个转换器函数来反转传递给loads()的进程as object_hook。
答案 1 :(得分:0)
老实说,最简单的方法是从对象手动创建字典列表。然后你可以直接将它传递给JSON函数。
data = [{'name': x.name, 'grade': x.grade} for x in list_of_tests]
with open('output.json', 'w') as out:
json.dump(data, out)
并回读:
with open('output.json') as inp:
data = json.load(inp)
list_of_tests = [Test(x['name'], x['grade']) for x in data]