Skip to main content
Pre-release

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

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonref-ap-0.3-dev.tar.gz (12.4 kB view details)

Uploaded Source

File details

Details for the file jsonref-ap-0.3-dev.tar.gz.

File metadata

  • Download URL: jsonref-ap-0.3-dev.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jsonref-ap-0.3-dev.tar.gz
Algorithm Hash digest
SHA256 c53acf383d2a56f8f92682db860bce4706cb14f679d6761126d536896eaff4dc
MD5 51b25675917222f986380655fe94dc03
BLAKE2b-256 c23109babfa03c4a548f31046d9e57617cffaaef5620aeb242af252d19ae4b28

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3-dev This release

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page