Validx library defines new types like Str, Int, Dict. It helps validate a schema in a pleasant way.
The Email type is not defined. As I needed it with django, I subclass Str to create an Email schema.
schema = Dict({
    'name': Str(),
    'email': Email(),
})
valid_json = {
    'name': 'Toto',
    'email': 'toto@gmail.com',
}
invalid_json = {
    'name': 'Toto',
    'email': 'toto@@gmail.com',
}
schema(valid_json)  # json is valid, no exception raised.
schema(invalid_json)  # raise validx.exc.errors.PatternMatchError.