Welcome to jschon!

Test Status Code Coverage PyPI Package Version Python Versions Documentation Status License

jschon is a pythonic and extensible implementation of the JSON Schema specification.


  • JSON Schema validator implementation (drafts 2019-09, 2020-12)

    • Schema compilation and indexing

    • $ref loading from local and remote sources

    • Support for custom keywords, vocabularies and meta-schemas

    • Support for format validation

  • JSON class implementing the JSON data model

  • JSON Pointer (RFC 6901)

  • JSON Patch (RFC 6902)

  • Relative JSON Pointer (draft)

  • JSON document translation (experimental)


pip install jschon


Create a JSON schema:

from jschon import create_catalog, JSON, JSONSchema


demo_schema = JSONSchema({
    "$id": "https://example.com/demo",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "array",
    "items": {
        "anyOf": [
                "type": "string",
                "description": "Cool! We got a string here!"
                "type": "integer",
                "description": "Hey! We got an integer here!"

Validate JSON data:

result = demo_schema.evaluate(
    JSON([12, "Monkeys"])

Generate JSON Schema-conformant output:

>>> result.output('basic')
    "valid": True,
    "annotations": [
            "instanceLocation": "",
            "keywordLocation": "/items",
            "absoluteKeywordLocation": "https://example.com/demo#/items",
            "annotation": True
            "instanceLocation": "/0",
            "keywordLocation": "/items/anyOf/1/description",
            "absoluteKeywordLocation": "https://example.com/demo#/items/anyOf/1/description",
            "annotation": "Hey! We got an integer here!"
            "instanceLocation": "/1",
            "keywordLocation": "/items/anyOf/0/description",
            "absoluteKeywordLocation": "https://example.com/demo#/items/anyOf/0/description",
            "annotation": "Cool! We got a string here!"