首页 > 解决方案 > 如何将 dataclass_json 中的 field_name 选项用于嵌套字典

问题描述

我尝试使用“dataclass_json”中的“field_name”选项来转换嵌套字典。
但是,我无法得到预期的结果。

数据.py

from dataclasses import *
from dataclasses_json.api import config, dataclass_json

@dataclass_json
@dataclass
class FirstFloor:
    name: str = field(metadata=config(field_name="Name"))
    email: str = field(metadata=config(field_name="e-Mail"))
    address: str = field(metadata=config(field_name="Address"))

@dataclass_json
@dataclass
class SecondFloor:
    user: FirstFloor = field(metadata=config(field_name="User"))
    point: int = field(metadata=config(field_name="Point"))

主.py

from data import FirstFloor, SecondFloor

test_dict_1 = {
    "name": "Mash",
    "email": "example.com",
    "address": "Osaka"
}

test_class_1 = FirstFloor(**test_dict_1)
test_json_1 = test_class_1.to_json(indent=4, ensure_ascii=False)

print(test_json_1)

############################################3

test_dict_2 = {
    "user": {
        "name": "Leaf",
        "email": "test.com",
        "address": "Fukuoka"
    },
    "point": 100
}

test_class_2 = SecondFloor(**test_dict_2)
test_json_2 = test_class_2.to_json(indent=4, ensure_ascii=False)

print(test_json_2)

在这种情况下,test_json_1 是好的结果: { "Name": "Mash", "e-Mail": "example.com", "Address": "Osaka" }

但 test_json_2 不是预期结果:{“User”:{“name”:“Leaf”,“email”:“test.com”,“address”:“Fukuoka”},“Point”:100}

我想知道这段代码中哪个选项更少。
谢谢你。

标签: pythonjsonpython-dataclasses

解决方案


推荐阅读