dataclass_json:获取json/dict对象中的类名



我在python中使用库dataclass_json,我想知道是否有一种方法可以在dict/json中返回类名。

下面是我想要得到的一个例子:

from dataclasses import dataclass
from dataclasses_json import dataclass_json
@dataclass_json
@dataclass
class Person:
name: str
person = Person(name='lidatong')
# What I would like to obtain
person.to_json()  # '{ "Person": {"name": "lidatong"} }'
person.to_dict()  # { 'Person': {'name': 'lidatong'} }
# instead of the current behavior
person.to_json()  # '{"name": "lidatong"}'
person.to_dict()  # {'name': 'lidatong'}

感谢您的反馈

JSON序列化来自Javascript,它不是基于类的,而是基于原型的,所以它通常省略类名(因为它对代码无关紧要)。但是这个名字对人类来说很重要,所以我理解你的需要。

如果你可以控制如何调用代码,那么你可以创建一个简单的函数:

import json
def to_my_custom_json(person: Person) -> str:
return json.dumps({"Person": person.to_dict()})

给出你想要的内容:

print(to_my_custom_json(person))  # {"Person": {"name": "lidatong"}}

也可以添加到类本身:

@dataclass_json
@dataclass
class Person:
name: str
def to_my_custom_json(self) -> str:
return json.dumps({"Person": self.to_dict()})
print(person.to_my_custom_json())  # {"Person": {"name": "lidatong"}}

但是如果不能控制你的对象如何被序列化(通常在框架中),那么你在问题中省略了指定它。

最新更新