An object wrapper for JSON Schema definitions
Project Description
python-jsonschema-objects
=========================
What
----
python-jsonschema-objects provides an *automatic* class-based binding to
JSON schemas for use in python.
For example, given the following schema:
.. code:: schema
{
"title": "Example Schema",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}
jsonschema-objects can generate a class based binding. Assume here that
the schema above has been loaded in a variable called ``schema``:
.. code:: python
>>> import python_jsonschema_objects as pjs
>>> builder = pjs.ObjectBuilder(schema)
>>> ns = builder.build_classes()
>>> Person = ns.ExampleSchema
>>> james = Person(firstName="James", lastName="Bond")
>>> james.lastName
u'Bond'
>>> james
<example_schema lastName=Bond age=None firstName=James>
Validations will also be applied as the object is manipulated.
.. code:: python
>>> james.age = -2
python_jsonschema_objects.validators.ValidationError: -4 was less
or equal to than 0
The object can be serialized out to JSON:
.. code:: python
>>> james.serialize()
'{"lastName": "Bond", "age": null, "firstName": "James"}'
Why
---
Ever struggled with how to define message formats? Been frustrated by
the difficulty of keeping documentation and message definition in
lockstep? Me too.
There are lots of tools designed to help define JSON object formats,
foremost among them `JSON Schema <http://json-schema.org>`__. JSON
Schema allows you to define JSON object formats, complete with
validations.
However, JSON Schema is language agnostic. It validates encoded JSON
directly - using it still requires an object binding in whatever
language we use. Often writing the binding is just as tedious as writing
the schema itself.
This avoids that problem by auto-generating classes, complete with
validation, directly from an input JSON schema. These classes can
seamlessly encode back and forth to JSON valid according to the schema.
Installation
------------
::
pip install python_jsonschema_objects
Tests
-----
Tests are managed using the excellent Tox. Simply ``pip install tox``,
then ``tox``.
Changelog
---------
0.0.1 - Class generation works, including 'oneOf' and 'allOf'
relationships. All basic validations work.
=========================
What
----
python-jsonschema-objects provides an *automatic* class-based binding to
JSON schemas for use in python.
For example, given the following schema:
.. code:: schema
{
"title": "Example Schema",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}
jsonschema-objects can generate a class based binding. Assume here that
the schema above has been loaded in a variable called ``schema``:
.. code:: python
>>> import python_jsonschema_objects as pjs
>>> builder = pjs.ObjectBuilder(schema)
>>> ns = builder.build_classes()
>>> Person = ns.ExampleSchema
>>> james = Person(firstName="James", lastName="Bond")
>>> james.lastName
u'Bond'
>>> james
<example_schema lastName=Bond age=None firstName=James>
Validations will also be applied as the object is manipulated.
.. code:: python
>>> james.age = -2
python_jsonschema_objects.validators.ValidationError: -4 was less
or equal to than 0
The object can be serialized out to JSON:
.. code:: python
>>> james.serialize()
'{"lastName": "Bond", "age": null, "firstName": "James"}'
Why
---
Ever struggled with how to define message formats? Been frustrated by
the difficulty of keeping documentation and message definition in
lockstep? Me too.
There are lots of tools designed to help define JSON object formats,
foremost among them `JSON Schema <http://json-schema.org>`__. JSON
Schema allows you to define JSON object formats, complete with
validations.
However, JSON Schema is language agnostic. It validates encoded JSON
directly - using it still requires an object binding in whatever
language we use. Often writing the binding is just as tedious as writing
the schema itself.
This avoids that problem by auto-generating classes, complete with
validation, directly from an input JSON schema. These classes can
seamlessly encode back and forth to JSON valid according to the schema.
Installation
------------
::
pip install python_jsonschema_objects
Tests
-----
Tests are managed using the excellent Tox. Simply ``pip install tox``,
then ``tox``.
Changelog
---------
0.0.1 - Class generation works, including 'oneOf' and 'allOf'
relationships. All basic validations work.
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size & hash SHA256 hash help | File type | Python version | Upload date |
---|---|---|---|
python_jsonschema_objects-0.0.1-py2.py3-none-any.whl (11.3 kB) Copy SHA256 hash SHA256 | Wheel | 2.7 | Mar 28, 2014 |
python_jsonschema_objects-0.0.1.tar.gz (9.4 kB) Copy SHA256 hash SHA256 | Source | None | Mar 28, 2014 |