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()

参考文章

相关推荐
1024奇点6 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
实名上网宋凯宣6 小时前
Django
后端·python·django
Warren2Lynch7 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
如若1237 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
Knight_AL8 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing038 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
by209999 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河9 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
视觉小萌新9 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
IT召唤狮9 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php