当前位置: 首页 > news >正文

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

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

文档

  • https://marshmallow.readthedocs.io/
  • https://github.com/marshmallow-code/marshmallow

安装

$ pip install -U marshmallow

定义一个Python类

from datetime import datetimeclass User:def __init__(self, name, email):self.name = nameself.email = emailself.created_time = datetime.now()

定义一个Schema

from marshmallow import Schema, fieldsclass UserSchema(Schema):name = fields.String()email = fields.Email()created_time = fields.DateTime()

通过Schema对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()

参考文章

  • python之Marshmallow

相关文章:

  • 智能一体化管网水位监测仪怎么样?
  • Wireshark抓包(网络分析)工具
  • 机器学习——朴素贝叶斯
  • 利用 Google Artifact Repository 构建docker 镜像仓库
  • C语言左移与右移学习
  • 由浅入深学习统计学 - 常用统计图形学习
  • Stream流的groupingBy
  • 100天精通风控建模(原理+Python实现)——第3天:风控建模中如何处理缺失值?
  • 如何有效的保护Windows登录 安当加密
  • Googletest(Gtest)使用case指南
  • Leetcode153. Find Minimum in Rotated Sorted Array
  • C语言进阶
  • Mybatis-plus 内部提供的 ServiceImpl<M extends BaseMapper<T>, T> 学习总结
  • 链表的实现(文末附完整代码)
  • shell之route命令介绍
  • extjs4学习之配置
  • HTML-表单
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript创建对象的四种方式
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue全家桶实现一个Web App
  • 构造函数(constructor)与原型链(prototype)关系
  • 关于字符编码你应该知道的事情
  • 排序算法学习笔记
  • 前嗅ForeSpider中数据浏览界面介绍
  • 深度学习在携程攻略社区的应用
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 在Mac OS X上安装 Ruby运行环境
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​Python 3 新特性:类型注解
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • !$boo在php中什么意思,php前戏
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (初研) Sentence-embedding fine-tune notebook
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)编辑寄语:因为爱心,所以美丽
  • (转载)Google Chrome调试JS
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .Net 高效开发之不可错过的实用工具
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET使用存储过程实现对数据库的增删改查
  • .NET下的多线程编程—1-线程机制概述
  • ??eclipse的安装配置问题!??
  • ??myeclipse+tomcat
  • @JsonFormat与@DateTimeFormat注解的使用
  • @Not - Empty-Null-Blank