jsonref is a library for automatic dereferencing of JSON Reference objects for Python.
Project description
jsonref
jsonref
is a library for automatic dereferencing of JSON
Reference
objects for Python (supporting Python 3.3+).
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
>>> # An example json document
>>> json_str = """{"real": [1, 2, 3, 4], "ref": {"$ref": "#/real"}}"""
>>> data = jsonref.loads(json_str)
>>> pprint(data) # Reference is not evaluated until here
{'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"}}')
>>> # You can tell it is a proxy by using the type function
>>> type(data["real"]), type(data["ref"])
(<class 'list'>, <class 'jsonref.JsonRef'>)
>>> # You have direct access to the referent data with the __subject__
>>> # attribute
>>> type(data["ref"].__subject__)
<class 'list'>
>>> # If you need to get at the reference object
>>> data["ref"].__reference__
{'$ref': '#/real'}
>>> # Other than that you can use the proxy just like the underlying object
>>> ref = data["ref"]
>>> isinstance(ref, list)
True
>>> data["real"] == ref
True
>>> ref.append(5)
>>> del ref[0]
>>> # Actions on the reference affect the real data (if it is mutable)
>>> pprint(data)
{'real': [2, 3, 4, 5], 'ref': [2, 3, 4, 5]}
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
jsonref-1.0.0.post1.tar.gz
(9.4 kB
view hashes)
Built Distribution
Close
Hashes for jsonref-1.0.0.post1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69eec6f49a074a1e9f04d2751dfaa07ce3cef608ee09ef979e38f519d99bd6ef |
|
MD5 | db21a79783677af40f44cecc5a2a6268 |
|
BLAKE2b-256 | dfcb7910d62c74eeed0b43f45ef6ec8f0b04ccd3ef94d26f5d0ef4adbfcd5023 |