我在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"}}
但是如果不能控制你的对象如何被序列化(通常在框架中),那么你在问题中省略了指定它。