用@dataclasses和@dataclasses_json做嵌套类型的序列化和反序列化,并定义属性的对外映射字段

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

from dataclasses import dataclass,field
from dataclasses_json import dataclass_json, config, LetterCase

@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclass
class Address:
    street: str = field(default_factory=list,metadata=config(field_name="streetAddress"))
    city: str=''
    state: str=''

@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclass
class Person:
    name: str=''
    age: int=''
    addresses: List[Address] = field(default_factory=list,metadata=config(field_name="xxx"))

# 示例数据
example_person = Person(name="John Doe", age=30, addresses=[Address(street="123 Main St", city="Anytown", state="CA")])


data = {
    "name": "John Doe",
    "age": 30,
    "xxx": [
        {"streetAddress": "123 Main St", "city": "Anytown", "state": "CA"},
        {"streetAddress": "456 Elm St", "city": "Othertown", "state": "NY"}
    ]
}

# 反序列化
deserialized_person = Person.from_json(json.dumps(data))
print(deserialized_person)
# 序列化
serialized_person = Person()
serialized_person = serialized_person.to_json(indent=4)
print(serialized_person)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值