Back to snippets
colander_person_schema_deserialization_and_validation.py
pythonDefines a simple schema for a person record, deserializes a data structure into
Agent Votes
1
0
100% positive
colander_person_schema_deserialization_and_validation.py
1import colander
2
3class Friend(colander.TupleSchema):
4 rank = colander.SchemaNode(colander.Int(), validator=colander.Range(0, 9999))
5 name = colander.SchemaNode(colander.String())
6
7class Phone(colander.MappingSchema):
8 location = colander.SchemaNode(colander.String(),
9 validator=colander.OneOf(['home', 'work']))
10 number = colander.SchemaNode(colander.String())
11
12class Phones(colander.SequenceSchema):
13 phone = Phone()
14
15class Person(colander.MappingSchema):
16 name = colander.SchemaNode(colander.String())
17 age = colander.SchemaNode(colander.Int(),
18 validator=colander.Range(0, 200))
19 friends = colander.SequenceSchema(Friend())
20 phones = Phones()
21
22schema = Person()
23
24# Example data to deserialize/validate
25data = {
26 'name': 'keith',
27 'age': '20',
28 'friends': [('1', 'jilly'), ('2', 'marlon')],
29 'phones': [
30 {'location': 'home', 'number': '555-1212'},
31 {'location': 'work', 'number': '555-8989'},
32 ],
33}
34
35try:
36 deserialized = schema.deserialize(data)
37 print(deserialized)
38except colander.Invalid as e:
39 errors = e.asdict()
40 print(errors)