marshmallow: 简化Python对象系列化

转载:http://www.thinksaas.cn/topics/0/594/594368.html

marshmallow -一个轻量级的库用于将复杂对象转成简单的Python数据类型。或从简单的Python数据类型转成复杂对象。

from datetime import date
from marshmallow import Schema, fields, pprint

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.data, indent=2)
# { ‘artist‘: {‘name‘: ‘David Bowie‘},
#   ‘release_date‘: ‘1971-12-17‘,
#   ‘title‘: ‘Hunky Dory‘}

In short, marshmallow schemas can be used to:

  • Validate input data.
  • Deserialize input data to app-level objects.
  • Serialize app-level objects to primitive Python types. The serialized objects can then be rendered to standard formats such as JSON for use in an HTTP API.

Get It Now

$ pip install -U marshmallow

Documentation

Full documentation is available athttp://marshmallow.readthedocs.org/ .

Requirements

  • Python >= 2.6 or >= 3.3

marshmallow has no external dependencies outside of the Python standard library, althoughpython-dateutil is recommended for robust datetime deserialization.

Ecosystem

A list of marshmallow-related libraries can be found at the GitHub wiki here:

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

Project Links

License

MIT licensed. See the bundledLICENSE file for more details.

项目地址: https://github.com/marshmallow-code/marshmallow

时间: 2024-11-03 09:58:19

marshmallow: 简化Python对象系列化的相关文章

Python对象剖析

Python是面向对象语言,在Python世界中,一切皆是对象,一个整数是一个对象,一个字符串也是一个对象.更奇妙的是,类型也是一个对象,在Python虚拟机(解释器)执行代码过程中,也会生成许多对象,包括一个模块.代码块.函数等. 一.Python对象分类 Python对象在概念上可以分为5类. Fundamental对象:类型对象 Numeric对象:数值对象 Sequence对象:容纳其他对象的序列集合对象 Mapping对象:映射(关联)对象 Internal对象:Python虚拟机在运

python对象序列化或持久化的方法

http://blog.csdn.net/chen_lovelotus/article/details/7233293 一.Python对象持久化方法 目前为止,据我所知,在python中对象持久化有以下几种方法: 1. 使用(dbhash/bsddb, dbm, gdbm, dumbdbm 等)以及它们的"管理器"( anydbm ).只提供了 Python 字 符串的永久性储存. 提供一个类似字典和文件的对象,可以完成字符串的永久性存储. 2. 使用marshal和pickle来序

Python回顾与整理2:Python对象

0.说明 说对象是面向对象编程语言最重要的一部分一点也不为过,没有了"对象",面向对象将无从谈起.Python也是如此,如果无法掌握对象,你很难有大的进步与提升. 1.Python对象 (1)对象特性 Python使用对象模型来存储数据,构造任何类型的值都是一个对象,所有的Python对象都拥有下面的三个特性: 身份:每个对象一唯一身份标识,可使用内建函数id()查看该值(可以认为这个值是该对象的内在地址) 类型:对象的类型决定了对象(可以保存什么类型的值,进行什么样的操作,遵循什么样

【4】Python对象

本章主题 Python对象 内建类型 标准类型操作符 值的比较 对象身份比较 布尔类型 标准类型内建函数 标准类型总览 各种类型 不支持的类型 Python对象 Python使用对象模型来存储数据.构造任何类型的值都是一个对象.所有Pyhon对象都拥有三个特性:身份,类型和值. 标准类型 其他内建类型 我们可以使用内建函数type()得到特定对象的类型信息. None------Python的NULL对象 内部类型 代码 帧 跟踪记录 切片 省略 Xrange 代码对象 ...... 帧对象 帧

Python对象(下)

前面一篇文章介绍了一些Python对象的基本概念,这篇接着来看看Python对象相关的一些内容. Python对象的比较 Python对象有三个要素:身份,类型和值,所以我们就分别从这三个角度出发看看对象之间的比较. 对象身份比较 对象身份的比较,其实就是比较对象的内存地址,即内建函数id()的结果比较.可以用来判断不同的变量是否指向了同一个地址. 直接看例子: 通过例子的输出可以得到,f1和f2指向了不同的对象(地址):但是,i1和i2却指向了相同的对象(地址). 之所以产生这种差异,是因为P

Python对象(上)

Python是一门面向对象的语言,在Python中一切都是对象,函数是对象,类型也是对象. 下面就看看Python中对象相关的内容. Python对象基本概念 Python对象有三个基本的要素: 身份:对象的唯一性身份标志,是该对象的内存地址(可用内建函数id()获得) 类型:对象的类型决定了该对象可以保存什么类型的值,可进行什么样的操作(可用内建函数type()获得) 值:对象代表的数据 下面看看以下代码: num =7 print id(num) print type(num) print

Python 二、Python对象类型及其运算

一.Python对象的相关术语 Python中一切皆对象,python程序中保存的所有数据都是围绕对象这个概念展开的:所有的对象都是由类实例化而来的,只不过这些类有些是python内置的类:例如,整数和浮点数,字符串都是由python内置的类实例化而来的.除此之外用户还可以自定义类型,就是类. python程序中存储的所有数据都是对象 每个对象都有一个身份.一个类型和一个值 例如,school="MaGe Linux"会以"MaGe Linux"创建一个字符串对象,

零基础学python-4.1 python对象的简介和标准类型

对象,面向对象的核心,也是python的核心 python对象有三个特性 1.身份:也就是id,每一个对象都有id,通过id(obj)来读取,一般很少用到这个值,所以不需太管它 2.类型:对象保存什么类型的值,通过type(obj)可以读取,type本身也是对象,他返回的不是字符串,而是对象 我们举一两个例子: 3.值:对象的数据项 当对象创建时,这三个特性都会被赋值,前两个特性是只读的,数据项是可变的 python还有一系列的内建对象,一般来说,对于现在的编程都是够用,如果不够或者需要特殊的数

python源码剖析笔记1——Python对象初见

python源码剖析笔记1--Python对象初见 工作整两年了,用python最多,然而对于python内部机制不一定都清楚,每天沉醉于增删改查的简单逻辑编写,实在耗神.很多东西不用就忘记了,比如C语言,正好,python源码用C写的,分析python源码的同时又能温故C语言基础,实在是件很好的事情.另外,还有陈儒大神的<python源码剖析>做指引,分析也不至于没头没脑.期望在一个月的业余时间,能有所小成,以此为记. 1 python中的对象 python中,一切东西都是对象,在c语言实现