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
>>> # 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]}
Release files for jsonref 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jsonref-1.1.0.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jsonref-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.2 kB
Release files / jsonref-1.1.0.tar.gz
| Download URL | jsonref-1.1.0.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552
|
|
BLAKE2b-256 checksum How to use checksums |
aa0dc1f3277e90ccdb50d33ed5ba1ec5b3f0a242ed8c1b1a85d3afeb68464dca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.4.0 CPython/3.10.5
|
Release files / jsonref-1.1.0-py3-none-any.whl
| Download URL | jsonref-1.1.0-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9
|
|
BLAKE2b-256 checksum How to use checksums |
0cece1db9922bceb168197a558a2b8c03a7963f1afe93517ddd3cf99f202f996
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.4.0 CPython/3.10.5
|