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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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