跳转到主要内容

一个轻量级的库,用于将复杂数据类型转换为和从原生Python数据类型。

项目描述

Latest version Build status pre-commit.ci status Documentation

marshmallow 是一个ORM/ODM/框架无关的库,用于将复杂数据类型(如对象)转换为和从原生Python数据类型。

from datetime import date
from pprint import pprint

from marshmallow import Schema, fields


class ArtistSchema(Schema):
    name = fields.Str()


class AlbumSchema(Schema):
    title = fields.Str()
    release_date = fields.Date()
    artist = fields.Nested(ArtistSchema())


bowie = dict(name="David Bowie")
album = dict(artist=bowie, title="Hunky Dory", release_date=date(1971, 12, 17))

schema = AlbumSchema()
result = schema.dump(album)
pprint(result, indent=2)
# { 'artist': {'name': 'David Bowie'},
#   'release_date': '1971-12-17',
#   'title': 'Hunky Dory'}

简而言之,marshmallow模式可用于

  • 验证 输入数据。

  • 反序列化 输入数据到应用程序级别的对象。

  • 序列化 应用程序级别的对象到原始Python类型。序列化对象可以然后渲染为JSON等标准格式,用于在HTTP API中使用。

立即获取

$ pip install -U marshmallow

文档

完整的文档可在https://marshmallow.readthedocs.io/找到。

要求

  • Python >= 3.8

生态系统

有关与marshmallow相关的库列表,请参阅GitHub wiki上的内容

https://github.com/marshmallow-code/marshmallow/wiki/Ecosystem

鸣谢

贡献者

本项目的存在离不开所有贡献者。

强烈鼓励您参与marshmallow的开发。查看贡献指南,了解您如何提供帮助。

感谢所有为marshmallow做出贡献的人!

Contributors

赞助商

如果您觉得marshmallow很有用,请考虑通过捐赠来支持团队。您的捐赠有助于推动marshmallow的发展。

感谢所有赞助商![成为赞助商]

Backers

赞助商

marshmallow由Route4Me赞助。

Routing Planner

通过成为赞助商(或要求您的公司成为赞助商)来支持此项目。您的标志将在此处显示,并附有链接到您的网站。[成为赞助商]

专业支持

通过Tidelift Subscription,现在可以通过专业支持的marshmallow。

Tidelift为软件开发团队提供购买和维护其软件的单个来源,并从最了解其专家的专业级保证中无缝集成现有工具。[获取专业支持]

Get supported marshmallow with Tidelift

许可证

MIT许可。有关更多详细信息,请参阅捆绑的LICENSE文件。

项目详情


发行历史 发布通知 | RSS源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

marshmallow-3.22.0.tar.gz (176.8 kB 查看哈希值)

上传时间

构建分发

marshmallow-3.22.0-py3-none-any.whl (49.3 kB 查看哈希值)

上传时间 Python 3

支持