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

参考文章

相关推荐
树码小子11 小时前
综合练习:验证码案例(1)总体设计
java·开发语言·spring
草莓熊Lotso11 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
Ronin30511 小时前
持久化数据管理中心模块
开发语言·c++·rabbitmq·gtest
froginwe1111 小时前
AJAX 实例详解
开发语言
魔力军11 小时前
Rust学习Day2: 变量与可变性、数据类型和函数和控制流
开发语言·学习·rust
aiguangyuan11 小时前
基于BiLSTM-CRF的命名实体识别模型:原理剖析与实现详解
人工智能·python·nlp
sycmancia11 小时前
C++——强制类型转化、const的理解
开发语言·c++
hzb6666611 小时前
unictf2026
开发语言·javascript·安全·web安全·php
燃于AC之乐11 小时前
深入解剖STL deque:从源码剖析到容器适配器实现
开发语言·c++·stl·源码剖析·容器实现
kaikaile199511 小时前
基于MATLAB的滑动轴承弹流润滑仿真程序实现
开发语言·matlab