Skip to main content

JSON to JSONSchema

Project description

json2schema

Get (Guess) jsonschema from one json sample

Features

  • json to jsonschema

Install

$ pip install json2schema

Use

Simple Use

from json2schema import json2schema
from pprint import pprint

data = {
    "first_name": "George",
    "last_name": "Washington",
    "birthday": "1732-02-22",
    "address": {
        "street_address": "3200 Mount Vernon Memorial Highway",
        "city": "Mount Vernon",
        "state": "Virginia",
        "country": "United States"
    }
}

schema = json2schema(data)
pprint(schema)

output

{'$schema': 'http://json-schema.org/schema',
 'properties': {'address': {'properties': {'city': {'type': 'string'},
                                           'country': {'type': 'string'},
                                           'state': {'type': 'string'},
                                           'street_address': {'type': 'string'}},
                            'required': ['street_address',
                                         'city',
                                         'state',
                                         'country'],
                            'type': 'object'},
                'birthday': {'type': 'string'},
                'first_name': {'type': 'string'},
                'last_name': {'type': 'string'}},
 'required': ['first_name', 'last_name', 'birthday', 'address'],
 'type': 'object'}

More arguments

You can use required_all=True to mark all properties or items as required with schema = json2schema(data, required_all=True) you will get

{'$schema': 'http://json-schema.org/schema',
 'properties': {'address': {'properties': {'city': {'type': 'string'},
                                           'country': {'type': 'string'},
                                           'state': {'type': 'string'},
                                           'street_address': {'type': 'string'}},
                            'required': ['street_address',
                                         'city',
                                         'state',
                                         'country'],
                            'type': 'object'},
                'birthday': {'type': 'string'},
                'first_name': {'type': 'string'},
                'last_name': {'type': 'string'}},
 'required': ['first_name', 'last_name', 'birthday', 'address'],
 'type': 'object'}

or use check_value=True to mark all value exact the same with the sample data with schema = json2schema(data, check_value=True), you will get

{'$schema': 'http://json-schema.org/schema',
 'properties': {'address': {'properties': {'city': {'pattern': '^Mount Vernon$',
                                                    'type': 'string'},
                                           'country': {'pattern': '^United '
                                                                  'States$',
                                                       'type': 'string'},
                                           'state': {'pattern': '^Virginia$',
                                                     'type': 'string'},
                                           'street_address': {'pattern': '^3200 '
                                                                         'Mount '
                                                                         'Vernon '
                                                                         'Memorial '
                                                                         'Highway$',
                                                              'type': 'string'}},
                            'required': ['street_address',
                                         'city',
                                         'state',
                                         'country'],
                            'type': 'object'},
                'birthday': {'pattern': '^1732-02-22$', 'type': 'string'},
                'first_name': {'pattern': '^George$', 'type': 'string'},
                'last_name': {'pattern': '^Washington$', 'type': 'string'}},
 'required': ['first_name', 'last_name', 'birthday', 'address'],
 'type': 'object'}

TODO:

  • get jsonschema with multiple samples
  • more args for json2schema

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

json2schema-0.1.1.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

json2schema-0.1.1-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file json2schema-0.1.1.tar.gz.

File metadata

  • Download URL: json2schema-0.1.1.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for json2schema-0.1.1.tar.gz
Algorithm Hash digest
SHA256 66efec8f389fcab2391810ce3bc6dcc32111c48a4d146c50d95be7b6b06fb860
MD5 a6dfdd659a117f02be1a5de142962509
BLAKE2b-256 33062b98d8b35b3730f140822ecf5937386446e33d8c8a072724745b81f24618

See more details on using hashes here.

File details

Details for the file json2schema-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: json2schema-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for json2schema-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cb08d13893e8582f29a3b4f01b9c381742890c98d22b8dd7693cffb1f38047c2
MD5 5fd2d23b3fef057ee1704fcdfb9b25ac
BLAKE2b-256 6783eabc118b2bd5e893a2e5a0b33a8c112ba540071f4c6dec714cc1e439e390

See more details on using hashes here.

Supported by

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