Generate C++ structures from JSON-Schema
Project description
JSON-Schema Codegen
This python library consumes JSON-Schema and generates C++ code. It generates structures to hold the values defined in the schema, restricting the values according to the schema. Each structure has JSON serialization and de-serialization methods.
Supported Schema Features
A C++ class is generated for each schema node according to the schema's type
property. Schemas without a type
property, with the exception of combining operators *Of
, are not supported.
- type: string
- minLength
- maxLength
- pattern
- type: string with enum
- type: integer
- maximum
- minimum
- exclusiveMaximum
- exclusiveMinimum
- multipleOf
- type: number
- maximum
- minimum
- exclusiveMaximum
- exclusiveMinimum
- multipleOf
- type: boolean
- type: null
- type: array
- items
- minItems
- maxItems
- type: object
- properties
- required
- allOf
- anyOf
- oneOf
References
$ref
references are supported for array items, object properties, allOf, anyOf, and oneOf. However, the caller must provide a "resolver" class which translates the reference into a class name and namespace.
C++ Requirements
- boost (boost::optional and boost::variant among others)
- rapidjson
- C++11
Python Requirements
- python 3.7
- jinja2
- stringcase
Installation
pip install json-schema-codegen
Usage
See example_usage.py
for a more elaborate example.
import jsonschemacodegen.cpp as cpp
simpleResolver = cpp.SimpleResolver()
output_dir = "/tmp"
generator = cpp.GeneratorFromSchema(src_output_dir=output_dir,
header_output_dir=output_dir,
resolver=simpleResolver,
namespace=[],
src_usings=[])
sampleSchema = {"type": "string"}
generator.Generate(sampleSchema, 'Example', 'example')
License
GPLv2
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
Built Distribution
Hashes for json-schema-codegen-0.0.7.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2206214541c881646c52d69c9364635544a2553efe83b4813c702634645db2ff |
|
MD5 | 56dc06cfe062f4c2f650670fbe743d0b |
|
BLAKE2b-256 | 88f321e181125a4c0831a98069ae573fb49976163581eda8cbe6e6877eae1a76 |
Hashes for json_schema_codegen-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2014d4fbf36f9817d0b8664ded0f273f1ee30554dc7a7fbe21053d1ce723ea28 |
|
MD5 | b32d45d522cfa1ae16687bf664c883b9 |
|
BLAKE2b-256 | 31652116a1d90dd1b020e2ba809804026ef647dcbc8906660288ba8d7d41d67c |