Skip to main content

JSON Schema Utils

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 enum to const.
  • 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.

TODO

  • propagate non type under containers (*Of, if, then, else, reference?) to reduce false positive errors/warnings.
  • simplify: deduplicate constants in enum?

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

json_schema_utils-0.9.15.tar.gz (69.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

json_schema_utils-0.9.15-py3-none-any.whl (74.1 kB view details)

Uploaded Python 3

File details

Details for the file json_schema_utils-0.9.15.tar.gz.

File metadata

  • Download URL: json_schema_utils-0.9.15.tar.gz
  • Upload date:
  • Size: 69.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for json_schema_utils-0.9.15.tar.gz
Algorithm Hash digest
SHA256 e0465d9ba5f32a919ae4db08fd3ac45e5af0ecdbe5a4edf7c3c9837d25818331
MD5 a4b23dcfece1fe4c9a1be5cf8a21755b
BLAKE2b-256 fd6bc40a95ac82a8cf27f3b6457e3460b569b87a33a85e77fb5136a1aed1f725

See more details on using hashes here.

File details

Details for the file json_schema_utils-0.9.15-py3-none-any.whl.

File metadata

File hashes

Hashes for json_schema_utils-0.9.15-py3-none-any.whl
Algorithm Hash digest
SHA256 4e47026f6f84f9d88d9e9ca3cf5527a9a3d523a4bb80d63eaf4f2d06ed8e0cd0
MD5 55620b200ee0a87629ad02f825be36cb
BLAKE2b-256 e3f356489256efb6078258a08530943740feb20d68fec735113f66404d0ccbc7

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9.17

2 files

0.9.16

2 files

This release

0.9.15 This release

2 files

0.9.14

2 files

0.9.13

2 files

0.9.12

2 files

0.9.11

2 files

0.9.10

2 files

0.9.9

2 files

0.9.8

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page