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

参考文章

相关推荐
方璧1 小时前
限流的算法
java·开发语言
Hi_kenyon1 小时前
VUE3套用组件库快速开发(以Element Plus为例)二
开发语言·前端·javascript·vue.js
曲莫终1 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言
Learn-Python2 小时前
MongoDB-only方法
python·sql
ghie90902 小时前
基于MATLAB GUI的伏安法测电阻实现方案
开发语言·matlab·电阻
Gao_xu_sheng2 小时前
Inno Setup(专业安装/更新 EXE)
开发语言
小途软件3 小时前
用于机器人电池电量预测的Sarsa强化学习混合集成方法
java·人工智能·pytorch·python·深度学习·语言模型
吴声子夜歌3 小时前
Java数据结构与算法——基本数学问题
java·开发语言·windows
扫地的小何尚3 小时前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节