JSON Schema Utils
August 2, 2026 ยท View on GitHub
Random utilities to analyze, manipulate, simplify, convert or compile JSON Schema.
Installation
Install latest version with pip from
PyPI or directly from
GitHub:
python -m venv venv
source venv/bin/activate
# from PyPI:
pip install json_schema_utils
# OR from latest sources:
pip install git+https://github.com/zx80/json-schema-utils.git
Inline Schema References
Replace references $ref by their definitions.
# no $id
jsu-inline -m "file:// ./tests" tests/*.schema.json
# with $id
jsu-inline -a tests/foo.schema.json
Simplify Schema
Apply various schema simplifications:
- remove type-incompatible keywords and formats, with warnings.
- try to move up list-of-one-schema
*Of. - simplify type lists.
- change list-of-one
enumtoconst. - detect some cases of infeasible schemas.
- remove uneffective keywords in corner cases.
jsu-simpler tests/*.schema.json
Check JSON Values against a Schema
Check a JSON values match a given schema using
jmc (jsu-compile with
jmc dynamic Python backend),
jsonschema or
jschon
implementations.
jsu-check tests/foo.schema.json tests/foo.*.value.json
Note: the corresponding external dependencies must be installed.
JSON Schema Stats and Issues
Generate a report about JSON schemas, including possible bugs.
jsu-stats tests/*.schema.json
This script is extracted from JSON Schema Stats which has been updated to depend on this module.
JSON Prettyprinter
jsu-pretty --indent 2 --sort-keys tests/*.schema.json
You could also use jq . for this purpose.
JSON Schema to JSON Model Conversion
Convert a subset of JSON Schema to JSON Model.
The converter is expected to fully supports JSON Schema draft3 to draft7. Note that our tools include a significant support for format assertions, with 80-95% of optional format tests being validated, usually in a safe way (i.e. false positives may occur, false negatives are avoided).
It partially supports draft 2019-09 and 2020-12. In particular, vocabularies are fully supported. However, there is a limited support for some features:
- dynamic anchors and references
- unevaluated items and properties
Moreover, this is a software, hence there may be bugs.
jsu-model --format -o foo.model.json foo.schema.json
JSON Schema Compiler
Convert the input schema and generate C, JS, Python, Java, Perl or even PL/pgSQL code.
The compiler first converts the schema to a model (see previous command), then proceeds to compile the generated model to actual code using the JSON Model Compiler as a backend.
# generate a python script
jsu-compile -o some.py some.schema.json
# run the script to validate values
./some.py val1.json val2.json
The generated code (here the some.py Python script) needs some runtime which
is installed with the compiler python module.
Other languages require specific runtimes, which are available in the
docker.io/zx80/jmc container image, or can be installed independently,
see JSON Model HOWTO.
JSON Schema compliance Bowtie badges:
- C
,
- Python
,
- JavaScript
,
- Java
,
- Perl
.
TODO
- propagate non type under containers (
*Of,if,then,else, reference?) to reduce false positive errors/warnings. - simplify: deduplicate constants in enum?