jschema2py

jsonschema to python class converter


Keywords
jschema2py, json, schema, jsonschema, library, python3
License
MIT
Install
pip install jschema2py==0.1.0

Documentation

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)