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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66efec8f389fcab2391810ce3bc6dcc32111c48a4d146c50d95be7b6b06fb860 |
|
MD5 | a6dfdd659a117f02be1a5de142962509 |
|
BLAKE2b-256 | 33062b98d8b35b3730f140822ecf5937386446e33d8c8a072724745b81f24618 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb08d13893e8582f29a3b4f01b9c381742890c98d22b8dd7693cffb1f38047c2 |
|
MD5 | 5fd2d23b3fef057ee1704fcdfb9b25ac |
|
BLAKE2b-256 | 6783eabc118b2bd5e893a2e5a0b33a8c112ba540071f4c6dec714cc1e439e390 |