python - 将 JSON 解析为对象字典
问题描述
我的 JSON 内容如下:
{
"employee_1": {"name": "Sarah"},
"employee_2": {"name": "Emma"}
}
创建为:
class Employee:
def __init__(self, name):
self.name = name
employees = {}
employees["employee_1"] = Employee("Sarah")
employees["employee_2"] = Employee("Emma")
json_str = json.dumps(employees,
default=lambda x: x.__dict__)
我将此 JSON 写入文件,然后从文件中加载它。但是,加载的对象被反序列化为字典的字典,而不是Employee
s 的字典。
loaded_employees = json.loads(json_str)
print(type(employees["employee_1"]))
print(type(loaded_employees["employee_1"]))
输出是:
<class '__main__.Employee'>
<class 'dict'>
我希望加载employee_1
的是 type Employee
,就像坚持到 JSON 时一样。
我认为这应该是可以实现的object_hook
;这个 SO 答案或 object_hook
文档解释了如何将它用于“平面”类型对象(因为缺少更好的词),但不确定如何将它用于自定义类型的字典,就像这里一样。
解决方案
我想说你想要做的是让你的 init 语句像现在一样接受字典,然后通过循环遍历你的字典或来自 json 的列表来创建类。您还必须创建一个特定的转储函数,将对象中的所有变量转储到字典中以移动到 json。
推荐阅读
- node.js - 如何在 WSL 2 Ubuntu 中更新 npm
- c++ - 使用数组在地图中插入 - 错误:无法将“int&&”类型的右值引用绑定到“int”类型的左值
- c++ - 如何在 C++ 中安全地实现可重用的暂存内存?
- swift - 从 openweathermap.org 加载数据
- node.js - npm 安装失败;node_modules 消失
- javascript - 从 JavaFX 迁移到 HTML/JavaScript
- node.js - 通过使用 express、EJS、Google Cloud 动态生成签名 URL 来显示图像
- java - 休眠 Postgres - findById() 不起作用
- c# - 抓住罗技 Easy-Switch 按键
- rust - Solana Rust 智能合约如何获得区块高度或 Unix 时间?