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

参考文章

相关推荐
dFObBIMmai几秒前
html怎么用inert属性禁用_HTML如何通过Inert暂停交互区域
jvm·数据库·python
hanbr1 分钟前
C++ 类型转换与异常处理全解析
开发语言·c++
X56612 分钟前
CSS如何实现一致的圆角半径设计_通过CSS变量存储border-radius
jvm·数据库·python
luck_bor4 分钟前
使用接口定义规范,实现类完成具体逻辑
java·开发语言
深度学习lover7 分钟前
<数据集>yolo 桃子识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·桃子识别
2301_795099747 分钟前
防范SQL注入的SQL编码规范_禁用动态拼接字符串语句.txt
jvm·数据库·python
小小de风呀7 分钟前
de风——【从零开始学C++】(六):模板初阶
开发语言·c++
likerhood8 分钟前
java的泛型(generics)详细讲解
java·开发语言
duke8692672149 分钟前
PHP怎么使用Eloquent Attribute Synthesis属性合成_Laravel多源数据融合【指南】
jvm·数据库·python
2301_8125396710 分钟前
CSS如何制作下拉菜单弹性展开_利用transform-origin
jvm·数据库·python