Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

jsonref

https://travis-ci.org/gazpachoking/jsonref.png?branch=master https://coveralls.io/repos/gazpachoking/jsonref/badge.png?branch=master

jsonref is a library for automatic dereferencing of JSON Reference objects for Python (supporting 2.6+ including Python 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]}
Bitdeli badge

Metadata

Release files for jsonref-ap 0.3-dev

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jsonref-ap 0.3-dev
File Size Uploaded
jsonref-ap-0.3-dev.tar.gz 12.4 kB Details

Release files / jsonref-ap-0.3-dev.tar.gz

Download URL jsonref-ap-0.3-dev.tar.gz
Size 12.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c53acf383d2a56f8f92682db860bce4706cb14f679d6761126d536896eaff4dc
BLAKE2b-256 checksum
How to use checksums
c23109babfa03c4a548f31046d9e57617cffaaef5620aeb242af252d19ae4b28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3-dev This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page