Null Generation

When null is adopted as type, ranjg.gen returns None. Then the other keywords are ignored.

>>> import ranjg
>>> schema = { 'type': 'null' }
>>> generated = ranjg.gen(schema)  # -> returns None
>>> type(generated)
<class 'NoneType'>

Multiple type with null

Type null is especially useful when used in multiple type.

For non-required items, if you want to express the absence of a value as null, you can write the following:

>>> import ranjg
>>> schema = {
...     'type': 'object',
...     # ↓ age is required. So a result dict has always key ``age``.
...     'required': ['name', 'age'],
...     'properties': {
...         'name': { 'type': 'string', 'minLength': 1 },
...         # ↓ The value of age can be an non-negative integer or None.
...         'age': { 'type': ['integer', 'null'], 'minimum': 0 },
...     }
... }
>>> generated = ranjg.gen(schema)
>>> # Examples of ``generated``
>>> #     { 'name': 'Abc', 'age': 3 }
>>> #     { 'name': 'Exp', 'age': None }