Skip to main content

jsonschema to python class converter

Project description

JSchema2py

JSchema2py is able to generate python classes starting from JSONSchema and provides the automatic support for types and constraints checking.

Installation

The package can be installed through pip:

$ pip install jschema2py

or downloaded from GitHub.

Examples

For example, given the following schema:

{
  "title": "UserInfo",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^[^a-z0-9]"
    },
    "userName": {
      "type": "string"
    },
    "age": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    }
  }
}

jschema2py can easily convert it into python class in this way (Assume here that the schema is stored into variable called schema):

from jschema2py import build_class
UserInfo = build_class(schema)
user = UserInfo()
user.name = "Jacopo"
user.userName = "JDL"
user.age = 24
print(user)

validation will be performed on the object manipulation:

user.name = "jacopo" # raise ConstraintError (pattern: ^[^a-z0-9])
user.age = "24" # raise TypeError

The object can be serialized into a JSON document:

jsdoc = str(user)

Accessing generated classes

If one of the property of the schema refers to another object, you can access the class that represents the referred object by using method get_class:

{
  "title": "Nested",
  "type": "object",
  "properties": {
    "inner": {
      "title": "Inner",
      "type": "object",
      "properties": {
        "string": {
          "type": "string",
          "default": "I'm inner!"
        }
      }
    }
  }
}
from jschema2py import build_class
Nested = build_class(schema)
nested = Nested()
nested.inner = nested.get_class("inner")() # Gets the class associated with the property "inner" 
print(nested.inner.string)

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

jschema2py-0.1.0.tar.gz (6.2 kB view details)

Uploaded Source

File details

Details for the file jschema2py-0.1.0.tar.gz.

File metadata

  • Download URL: jschema2py-0.1.0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jschema2py-0.1.0.tar.gz
Algorithm Hash digest
SHA256 859f9720bf11024d3fe30e736bf38487616627a7a98d4ca4f6591d0221728302
MD5 388fe423bf7f55bf88b29b8bc9b2ff59
BLAKE2b-256 86630b291fc527149cf4c67d16074aa5d4e422b010f62542e095be2376473f20

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