JSON Schema Draft v4 (http://json-schema.org/) formatting with marshmallow
Project description
marshmallow-jsonschema translates marshmallow schemas into JSON Schema Draft v4 compliant jsonschema. See http://json-schema.org/
Why would I want my schema translated to JSON?
What are the use cases for this? Let’s say you have a marshmallow schema in python, but you want to render your schema as a form in another system (for example: a web browser or mobile device).
Installation
pip install marshmallow-jsonschema
Some Client tools can render forms using JSON Schema
Simple Example
from marshmallow_jsonschema import JSONSchema
from tests import UserSchema
user_schema = UserSchema()
json_schema = JSONSchema()
json_schema.dump(user_schema).data
Yields:
{'properties': {'addresses': {'items': {'properties': {'city': {'title': 'city',
'type': 'string'},
'floor': {'title': 'floor',
'type': 'string'},
'id': {'default': 'no-id',
'title': 'id',
'type': 'string'},
'number': {'title': 'number',
'type': 'string'},
'street': {'title': 'street',
'type': 'string'}},
'required': ['city',
'number',
'street'],
'type': 'object'},
'type': ['array', 'null']},
'age': {'format': 'float', 'title': 'age', 'type': 'number'},
'balance': {'format': 'decimal',
'title': 'balance',
'type': 'number'},
'birthdate': {'format': 'date',
'title': 'birthdate',
'type': 'string'},
'created': {'format': 'date-time',
'title': 'created',
'type': 'string'},
'created_formatted': {'format': 'date-time',
'title': 'created',
'type': 'string'},
'created_iso': {'format': 'date-time',
'title': 'created',
'type': 'string'},
'email': {'title': 'email', 'type': 'string'},
'finger_count': {'format': 'integer',
'title': 'finger_count',
'type': 'number'},
'github': {'properties': {'uri': {'title': 'uri',
'type': 'string'}},
'required': ['uri'],
'type': 'object'},
'hair_colors': {'title': 'hair_colors', 'type': 'array'},
'homepage': {'title': 'homepage', 'type': 'string'},
'id': {'default': 'no-id', 'title': 'id', 'type': 'string'},
'name': {'title': 'name', 'type': 'string'},
'registered': {'title': 'registered', 'type': 'boolean'},
'sex': {'title': 'sex', 'type': 'string'},
'sex_choices': {'title': 'sex_choices', 'type': 'array'},
'since_created': {'title': 'since_created', 'type': 'string'},
'species': {'title': 'SPECIES', 'type': 'string'},
'time_registered': {'format': 'time',
'title': 'time_registered',
'type': 'string'},
'uid': {'format': 'uuid', 'title': 'uid', 'type': 'string'},
'updated': {'format': 'date-time',
'title': 'updated',
'type': 'string'},
'updated_local': {'format': 'date-time',
'title': 'updated',
'type': 'string'},
'various_data': {'title': 'various_data', 'type': 'object'}},
'required': ['name'],
'type': 'object'}
Nested Example
from marshmallow import Schema, fields
from marshmallow_jsonschema import JSONSchema
from tests import UserSchema
class Athlete(object):
user_schema = UserSchema()
def __init__(self):
self.name = 'sam'
class AthleteSchema(Schema):
user_schema = fields.Nested(JSONSchema)
name = fields.String()
athlete = Athlete()
athlete_schema = AthleteSchema()
athlete_schema.dump(athlete).data
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for marshmallow-jsonschema-0.1.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b30bc8d7e826e20484d608e1afd2dccd58c21a64efa0c86afbd012e6b5d0d8f1 |
|
MD5 | 7996286ffd29132b4be45d0762688002 |
|
BLAKE2b-256 | 931e55e4937bc5ef1029b982f823345a42936b208a310b2cef6851cea6d8ce1f |