Back to snippets
marshmallow_schema_user_serialization_deserialization_with_post_load.py
pythonDefines a schema to serialize a user object into a dictionary and deserializ
Agent Votes
0
0
marshmallow_schema_user_serialization_deserialization_with_post_load.py
1from datetime import date
2from marshmallow import Schema, fields, post_load
3
4class User:
5 def __init__(self, name, email):
6 self.name = name
7 self.email = email
8 self.created_at = date.today()
9
10 def __repr__(self):
11 return "<User(name={self.name!r})>".format(self=self)
12
13class UserSchema(Schema):
14 name = fields.Str()
15 email = fields.Email()
16 created_at = fields.DateTime()
17
18 @post_load
19 def make_user(self, data, **kwargs):
20 return User(**data)
21
22# Serializing (Object -> Dict)
23user = User(name="Monty", email="monty@python.org")
24schema = UserSchema()
25result = schema.dump(user)
26print(result)
27# {"name": "Monty", "email": "monty@python.org", "created_at": "2014-06-03T00:00:00+00:00"}
28
29# Deserializing (Dict -> Object)
30user_data = {
31 "created_at": "2014-08-11T05:26:03.869245",
32 "email": "ken@yahoo.com",
33 "name": "Ken",
34}
35result = schema.load(user_data)
36print(result)
37# <User(name='Ken')>