Skip to main content

jsonschema2md

Convert JSON Schemas to simple, human-readable Markdown documentation.


For example:

{
  "$id": "https://example.com/person.schema.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Person",
  "description": "JSON Schema for a person object.",
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string",
      "description": "The person's first name."
    },
    "lastName": {
      "type": "string",
      "description": "The person's last name."
    }
  }
}

will be converted to:

Person

JSON Schema for a person object.

Properties

  • firstName (string): The person's first name.
  • lastName (string): The person's last name.

There's also the possibility to translate it to another language. For example, the same schema in French would result in:

Person

JSON Schema for a person object.

Propriétés

  • firstName (chaîne de caractères): The person's first name.
  • lastName (chaîne de caractères): The person's last name.

See the examples directory for more elaborate examples.


Installation

Install with pip

pip install jsonschema2md

Usage

From the CLI

jsonschema2md [OPTIONS] <input.json> <output.md>

From Python

import json
import jsonschema2md

parser = jsonschema2md.Parser(
    examples_as_yaml=False,
    show_examples="all",
)
with open("./examples/food.json", "r") as json_file:
    md_lines = parser.parse_schema(json.load(json_file))
print(''.join(md_lines))

Options

  • examples_as_yaml: Parse examples in YAML-format instead of JSON. (bool, default: False)
  • show_examples: Parse examples for only the main object, only properties, or all. (str, default all, options: object, properties, all)
  • show_deprecated: Show deprecated properties. (bool, default: True)
  • collapse_children: Collapse object children into a <details> element (bool, default: False)
  • header_level: Base header level for the generated markdown. (int, default: 0)
  • ignore_patterns: List of regex patterns to ignore when parsing the schema. (list of str, default: None)

pre-commit hook

You can use the pre-commit hook with:

repos:
  - repo: https://github.com/sbrunner/jsonschema2md
    rev: <version> # Use the ref you want to point at
    hooks:
      - id: jsonschema2md
        files: schema.json
        args:
          - --pre-commit
          - schema.json
          - schema.md

Contributing

Bugs, questions or suggestions? Feel free to post an issue in the issue tracker or to make a pull request! See Contributing.md for more info.

Install the pre-commit hooks:

pip install pre-commit
pre-commit install --allow-missing-config

Showcase

Related projects:

Download files

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

Source Distribution

jsonschema2md-1.7.0.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

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

jsonschema2md-1.7.0-cp313-cp313-manylinux_2_39_x86_64.whl (23.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

File details

Details for the file jsonschema2md-1.7.0.tar.gz.

File metadata

  • Download URL: jsonschema2md-1.7.0.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for jsonschema2md-1.7.0.tar.gz
Algorithm Hash digest
SHA256 d69a5b011bf355c005e3c18be4515ae46d2689b38b593ced8d03c5ab66ddbaf3
MD5 e7390040e806f4482c565522178b1542
BLAKE2b-256 aac3056bfe8d6360750ed4a13eeafd37d5ace8859b69c9fdb8d6aac82dad7d58

See more details on using hashes here.

File details

Details for the file jsonschema2md-1.7.0-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema2md-1.7.0-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 06c327866a845827bc08b98cbea70ec96f46c0f8b67cb5a6d9833078a78764d3
MD5 afadc1b658189ebf3ebb72ae00f4c32a
BLAKE2b-256 dec50f9bd3ac958f8136e24e980ecd23e02de929eed9946fc4bf91e057142483

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.7.0 This release

2 files

1.6.1

2 files

1.6.0

2 files

1.5.2

2 files

1.5.1

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.3

2 files

1.1.0

2 files

1.0.0

2 files

0.9.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0.post1

2 files

0.1.1

2 files

0.1.0

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