Homepage: http://marshmallow.rtfd.org/
marshmallow is an ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, to and from native Python datatypes.
from datetime import datetime
from marshmallow import Schema, fields, pprint
# A "model"
class Person(object):
def __init__(self, name):
self.name = name
self.date_born = datetime.now()
# A serializer schema
class PersonSchema(Schema):
name = fields.String()
date_born = fields.DateTime()
person = Person("Guido van Rossum")
schema = PersonSchema()
result = schema.dump(person)
pprint(result.data)
# {"name": "Guido van Rossum", "date_born": "2014-08-17T14:42:12.479650+00:00"}
In short, marshmallow schemas are 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.
$ pip install -U marshmallow==1.0.0-a
Full documentation is available at http://marshmallow.rtfd.org/ .
- Python >= 2.6 or >= 3.3
marshmallow has no external dependencies outside of the Python standard library, although python-dateutil is recommended for robust datetime deserialization.
MIT licensed. See the bundled LICENSE file for more details.