jsonref
jsonref
is a library for automatic dereferencing of JSON
Reference
objects for Python (supporting Python 3.7+).
This library lets you use a data structure with JSON reference objects,
as if the references had been replaced with the referent data.
>>> from pprint import pprint
>>> import jsonref
>>>
>>> json_str = """{"real": [1, 2, 3, 4], "ref": {"$ref": "#/real"}}"""
>>> data = jsonref.loads(json_str)
>>> pprint(data)
{'real': [1, 2, 3, 4], 'ref': [1, 2, 3, 4]}
Features
- References are evaluated lazily. Nothing is dereferenced until it is
used.
- Recursive references are supported, and create recursive python data
structures.
References objects are actually replaced by lazy lookup proxy objects
which are almost completely transparent.
>>> data = jsonref.loads('{"real": [1, 2, 3, 4], "ref": {"$ref": "#/real"}}')
>>>
>>> type(data["real"]), type(data["ref"])
(<class 'list'>, <class 'jsonref.JsonRef'>)
>>>
>>>
>>> type(data["ref"].__subject__)
<class 'list'>
>>>
>>> data["ref"].__reference__
{'$ref': '#/real'}
>>>
>>> ref = data["ref"]
>>> isinstance(ref, list)
True
>>> data["real"] == ref
True
>>> ref.append(5)
>>> del ref[0]
>>>
>>> pprint(data)
{'real': [2, 3, 4, 5], 'ref': [2, 3, 4, 5]}