自定义对象的JSON转储存在问题

2024-10-06 08:53:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,尝试获取自定义对象的json转储,但它提供的是空对象

"{\n \"ID_12\": {}\n}",

这里的“数据”没有特定的类或模型,它可以是任何json内容

import json

data = '{"name": "venkat"}'
results = {}
results["ID_12"] = type("", (object,), json.loads(data))()

print(json.dumps(
        results, default=lambda o: o.__dict__, sort_keys=True, indent=4
    ),))

Tags: 数据对象name模型importidjson内容
1条回答
网友
1楼 · 发布于 2024-10-06 08:53:04

name是静态成员,而不是实例成员;因此,它是在type(o).__dict__上找到的,而不是在o.__dict__上找到的

我相信改用这个lambda可能会有帮助:

lambda o: { k: getattr(o, k) for k in dir(o) if not k.startswith("__") }

dir尝试收集对象可用的所有键名,包括静态键名和继承键名,但会有许多魔法成员(如__dict__)需要过滤掉

相关问题 更多 >