news 2026/6/17 16:54:28

marshmallow:Python 对象序列化,一个库就够了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
marshmallow:Python 对象序列化,一个库就够了

文章目录

  • marshmallow:Python 对象序列化,一个库就够了
    • 1、 这玩意儿是干嘛的
    • 2、 为什么要用它
    • 3、 怎么用
    • 4、 适合哪些人用

marshmallow:Python 对象序列化,一个库就够了

marshmallow 在 GitHub 上已经拿到 7,240 Star 了。

这是一个 ORM/ODM/框架无关的 Python 库,核心功能就是一件事:把复杂数据类型(比如对象)和原生 Python 数据类型做互相转换。你从数据库查出对象要返回给前端,ORM 返回的是 model 对象,不能直接 JSON 序列化。手动挨个字段写 dict,写多了手疼。

1、 这玩意儿是干嘛的

就一件事:序列化和反序列化,附带输入校验。

定义一套 Schema,字段名称和类型声明清楚,dump一下出 dict,再 render 成 JSON。前端传数据回来,load一下又变回对象。日期格式、嵌套关系、字段校验,都在 Schema 里声明完事。

2、 为什么要用它

写过 API 的人都懂:一个 User 对象十几个字段,外键关联了 Profile、Settings,手动序列化每加一个字段就得改两处。

日期格式要不要转字符串?嵌套对象怎么展开?前端传过来的数据合不合法?这些边界情况堆在一起,序列化代码很快就变成浆糊。

marshmallow 用 Schema 声明式描述数据结构,嵌套关系用fields.Nested搞定,日期自动格式化,输入自动校验。代码量和心智负担都降下来了。

3、 怎么用

核心就是定义 Schema:

frommarshmallowimportSchema,fieldsclassArtistSchema(Schema):name=fields.Str()classAlbumSchema(Schema):title=fields.Str()release_date=fields.Date()artist=fields.Nested(ArtistSchema())album=dict(artist=dict(name="David Bowie"),title="Hunky Dory",release_date=date(1971,12,17))schema=AlbumSchema()result=schema.dump(album)# {'artist': {'name': 'David Bowie'},# 'release_date': '1971-12-17',# 'title': 'Hunky Dory'}

Schema 同时承担序列化、反序列化、校验三个角色,一个定义到处用。

安装:

pipinstall-Umarshmallow

4、 适合哪些人用

  • 写 Python Web API、需要频繁做对象序列化的开发者
  • 用 Flask、Django、FastAPI,需要独立序列化层的人
  • 项目中涉及复杂嵌套数据和多字段校验的场景

发者

  • 用 Flask、Django、FastAPI,需要独立序列化层的人
  • 项目中涉及复杂嵌套数据和多字段校验的场景
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 14:31:40

AI Agent成本失控:从“月底账单惊吓“到Token治理

导读:2026 年,国内 54% 的企业已在生产环境部署 AI Agent,但 61% 的企业从未测量过 AI 项目的 ROI。本文基于真实生产场景,剖析 Agent 应用 Token 成本的五大失控陷阱,并演示如何用 AgentInsight SDK 构建一套从"…

作者头像 李华
网站建设 2026/6/13 14:31:35

2026重庆苹果手机维修口碑深度观察:好手艺、好物料与好信

在重庆,iPhone的保有量是一个庞大的数字。从解放碑到观音桥,从南坪到杨家坪,几乎每一个商圈、每一条数码街,都能找到挂着“苹果专修”招牌的店铺。然而,当你的iPhone屏幕碎裂、电池老化、或是主板进水不开机时&#xf…

作者头像 李华
网站建设 2026/6/13 14:31:33

076、Bug 修复全流程:报告理解到复现到定位到修改到验证的五步工程法

076、Bug 修复全流程:报告理解到复现到定位到修改到验证的五步工程法 从一次凌晨告警说起 凌晨2点17分,手机震动把我从梦里拽出来。PagerDuty告警:生产环境支付回调接口超时率飙升到23%。我揉着眼睛打开电脑,第一件事不是看代码,而是看告警详情——这是Claude Code项目里…

作者头像 李华
网站建设 2026/6/13 14:31:26

Agentic AI在项目风险评估中的应用:自动识别依赖关系

全文阅读约7分钟据Fortune Business Insights发布的《2026年Agentic AI市场报告》,全球Agentic AI市场规模在2025年已达到72.9亿美元,预计到2034年将增长至1391.9亿美元,年复合增长率高达40.50% 。高德纳在2026年的战略趋势预测中明确指出&am…

作者头像 李华
网站建设 2026/6/13 14:30:47

深入解析MC68040总线接口:从信号原理到多处理器系统设计

1. 项目概述:深入MC68040的总线世界搞嵌入式系统或者老式工作站设计的同行,对Motorola(后来的Freescale,现在的NXP)的68K系列处理器肯定不会陌生。而MC68040,作为该家族中集成度极高的一个里程碑&#xff0…

作者头像 李华