Skip to main content

JSON Schema Utils

Project description

JSON Schema Utils

Random utilities to analyze and manipulate 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 either jsonschema or jschon implementations.

jsu-check tests/foo.schema.json tests/foo.*.value.json

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 subset should comply with some restrictions described in Section 6 of An Analysis of Defects in Public JSON Schemas by Claire Yannou-Medrala and Fabien Coelho:

  • const, enum, $ref, type, allOf, anyOf, oneOf should be exclusive.
  • some keywords are not supported: multipleOf, contains
  • conditions if then else are translated to the logical equivalent: {if: C, then: T, else: E} is (C and T) or (not C and E)
jsu-model test/foo.schema.json

TODO

  • Testing. CI.
  • stats: warn instead of errors on unsure issues under if/then/else/not.
  • propagate non type under containers (*Of, if, then, else, reference?) to reduce false positive errors/warnings.
  • simplify: deduplicate constants in enum?

Project details


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.8.1.tar.gz (37.7 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.8.1-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for json_schema_utils-0.8.1.tar.gz
Algorithm Hash digest
SHA256 6d77d93acafbcdc2e090b6491059317cd5304f25c26d08324b12a0b3fd11e81f
MD5 799d05a972db7f6d95b4d04b80d209c1
BLAKE2b-256 b53fd448b0809cedaa391842c002036a9a5a8b60d9cc0b0b02fab79da71d1018

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for json_schema_utils-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 af7f7e65b656fcb3bc3b2726731f1f2fe26f0e5dcc6075825adf94e7743c13a9
MD5 9a5c32dca5ac2750a736bc6b11eaf0f2
BLAKE2b-256 f48e798a1d4ffaa92f7d86d75d22eb81c5718034538c13d173289884708ca990

See more details on using hashes here.

Supported by

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