Skip to main content

jsonref is a library for automatic dereferencing of JSON Reference objects for Python.

Project description

jsonref

image image image image

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]}

Project details


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.1.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

jsonref-1.1.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file jsonref-1.1.0.tar.gz.

File metadata

  • Download URL: jsonref-1.1.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.4.0 CPython/3.10.5

File hashes

Hashes for jsonref-1.1.0.tar.gz
Algorithm Hash digest
SHA256 32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552
MD5 c6bb6e762afc840dbb246fbcfeea6800
BLAKE2b-256 aa0dc1f3277e90ccdb50d33ed5ba1ec5b3f0a242ed8c1b1a85d3afeb68464dca

See more details on using hashes here.

File details

Details for the file jsonref-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: jsonref-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.4.0 CPython/3.10.5

File hashes

Hashes for jsonref-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9
MD5 09264b1311a8cf6194978cb1799d07e4
BLAKE2b-256 0cece1db9922bceb168197a558a2b8c03a7963f1afe93517ddd3cf99f202f996

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page