Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close

INTRO

jsonschema is a full featured validator for the JSON Schema specification. It conforms to the JSON Schema Proposal Second Draft which can be found at the following url:

http://groups.google.com/group/json-schema/web/json-schema-proposal---second-draft

INSTALL

jsonschema uses setup tools so it can be installed normally using:

python setup.py install

Furthermore, the test suite can be run by using the following command:

python setup.py test

USAGE

JSON documents and schema must first be loaded into a python dictionary type before it can be validated. This can be done with the JSON parser of your choice but I will use simplejson (just because).

Parsing a simple JSON document

>>> import jsonschema
>>> jsonschema.validate("simplejson", {"type":"string"})

Parsing a more complex JSON document.

>>> import simplejson
>>> import jsonschema
>>>
>>> data = simplejson.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
>>> schema = {
...   "type":"array",
...   "items":[
...     {"type":"string"},
...     {"type":"object",
...      "properties":{
...        "bar":{
...          "items":[
...            {"type":"string"},
...            {"type":"any"},
...            {"type":"number"},
...            {"type":"integer"}
...          ]
...        }
...      }
...    }
...   ]
... }
>>> jsonschema.validate(data,schema)

Handling validation errors ValueErrors are thrown when validation errors occur.

>>> import jsonschema
>>> try:
...     jsonschema.validate("simplejson", {"type":"string","minLength":15})
... except ValueError, e:
...     print e.message
...
Length of 'simplejson' must be more than 15.000000

EXTENDING JSONSCHEMA

jsonschema provides an API similar to simplejson in that validators can be overridden to support special property support or extended functionality. Samples of how jsonschema can be extended can be found in the examples directory.

LIMITATIONS

References are currently not supported. The unique property is currently not validated.

Recent activity

Nothing to see here, move along.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.