数据类_json:获取json/dict对象内的类名

7kqas0il  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(251)

我正在使用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'}

感谢您的反馈

gajydyqb

gajydyqb1#

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"}}

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

相关问题