rlt-json-tools

Project for dynamically converting json types into dynamic python objects


Keywords
json, frozen, object, dynamic
License
MIT
Install
pip install rlt-json-tools==0.0.2

Documentation

JSON Tools

Collection of JSON tools for Python 3 that help developers work with JSON (Javascript Object Notation) easier.

The source for this project is available here.

Overview

FrozenJSON

Allows a JSON to be loaded into a pseudo python object dynamically.

This idea and conception was from the book "Fluent Python: Clear, Concise, and Effective Programming" by Luciano Ramalho.

Basic Usage

For example, say we have a JSON in a file that looks like the following:

  {
    "_id": "5e52d75618947399f093ac7d",
    "isActive": false,
    "picture": "http://placehold.it/32x32",
    "latitude": -49.694182,
    "longitude": 126.901299,
    "tags": [
      "non",
      "est",
      "sint"
    ]
  }

If a developer wanted to treat this JSON as a python object, they could create a FrozenJSON using the following syntax:

import FrozenJSON
x = Frozen.of(<file_path>)

print(x.isActive)
...False
print(x.tags)
...["non","est","sint"]
print(x.tags[0])
..."non"

The of method is a dynamic constructor that is able to discern whether the data passed in a JSON string, the path to a file, a reference to a file itself, or a python dictionary.

So something like below is perfectly legal:

import FrozenJSON
data = {
    "name": "Ryan Long",
    "class": "Geometry"
}
x = FrozenJSON.of(data)
print(x.name)
..."Ryan Long"
print(x.class_)
..."Geometry"

Notice that although class is a keyword, FrozenJSON is still able to assign it to a key by appending "_" to the end. This is true for all python keywords that are also used as keys and happens automatically.