Python:使用marshmallow实现Python数据序列化、反序列化、数据验证

marshmallow是一个python数据序列化、反序列化、数据验证的工具库

文档

安装

bash 复制代码
$ pip install -U marshmallow

定义一个Python类

python 复制代码
from datetime import datetime


class User:
    def __init__(self, name, email):
        self.name = name
        self.email = email
        self.created_time = datetime.now()

定义一个Schema

python 复制代码
from marshmallow import Schema, fields


class UserSchema(Schema):
    name = fields.String()
    email = fields.Email()
    created_time = fields.DateTime()

通过Schema对Python类进行序列化

python 复制代码
def main():
    user = User('Tom', '123456@qq.com')
    schema = UserSchema()

    # 返回dict格式
    res1 = schema.dump(user)
    print(type(res1), res1)
    # <class 'dict'> {'created_time': '2023-11-12T18:29:10.178826', 'email': '123456@qq.com', 'name': 'Tom'}

    # 返回json编码格式的字符串
    res2 = schema.dumps(user)
    print(type(res2), res2)
    # <class 'str'> {"created_time": "2023-11-12T18:29:10.178826", "email": "123456@qq.com", "name": "Tom"}

if __name__ == '__main__':
    main()

参考文章

相关推荐
敢敢のwings21 分钟前
智元 GO-2 与 AgiBot-World 深度解读
开发语言·后端·golang
yaoxin52112329 分钟前
503. Java 反射 - 编写 ServiceFactory 类
java·开发语言·python
一个帅气昵称啊1 小时前
.Net C# AI智能体开发-快速开始
开发语言·c#·.net
kyrie_sakura1 小时前
python学习笔记3 -- 流程控制语句结构
笔记·python·学习
冬夜戏雪1 小时前
agent的trace 和eval
开发语言·前端·javascript
程序员小八7771 小时前
Java 快速转 Go
java·python·golang
Sagittarius_A*1 小时前
Burst Lab | PHP 审计 13|反序列化(三):POP 链构造与 Gadget Chain 分析
开发语言·web安全·php·代码审计·反序列化
职场的momo2 小时前
11个后端与AI岗位同时开放:Java、网关、推理优化怎么匹配
java·开发语言·人工智能
蓝速科技2 小时前
蓝速科技丨新旧楼宇混杂场景下会议室预约门牌屏一体化改造方案
开发语言·科技·php
梦想的旅途23 小时前
Python实现企业微信文本消息发送
开发语言·python·企业微信