A convenient library to deal with large json data
A convenient library to deal with large json data. The purpose of this package is help to deal with complex json-like data, converting them into a more manageable data structure.
OS X & Linux:
From PYPI
$ pip3 install activejson
from the source
$ git clone https://github.com/dany2691/activejson.git
$ cd activejson
$ python3 setup.py install
You can flat a complex dict the next way:
complex_json = {
'cat': {'grass': 'feline', 'mud': 'you never know', 'horse': 'my joke'},
'dolphin': [
{'tiger': [{'bird': 'blue jay'}, {'fish': 'dolphin'}]},
{'cat2': 'feline'},
{'dog2': 'canine'}
],
'dog': 'canine'
}
from activejson import flatten_json
flatten_complex_json = flatten_json(complex_json)
print(flatten_complex_json)
The result could be the next:
{
'cat_grass': 'feline',
'cat_horse': 'my joke',
'cat_mud': 'you never know',
'dog': 'canine',
'dolphin_0_tiger_0_bird': 'blue jay',
'dolphin_0_tiger_1_fish': 'dolphin',
'dolphin_1_cat2': 'feline',
'dolphin_2_dog2': 'canine'
}
On the other hand, is possible to convert that dict into an object with dynamic attributes:
from activejson import FrozenJSON
frozen_complex_json = FrozenJSON(complex_json)
print(frozen_complex_json.cat.grass)
print(frozen_complex_json.cat.mud)
print(frozen_b.dolphin[2].dog2)
The result could be the next:
'feline'
'you never know'
'canine'
To retrieve the underlying json, is possible to use the json property:
frozen_complex_json.json
{
'cat_grass': 'feline',
'cat_horse': 'my joke',
'cat_mud': 'you never know',
'dog': 'canine',
'dolphin_0_tiger_0_bird': 'blue jay',
'dolphin_0_tiger_1_fish': 'dolphin',
'dolphin_1_cat2': 'feline',
'dolphin_2_dog2': 'canine'
}
This project uses Poetry for dependecy resolution. It's a kind of mix between pip and virtualenv. Follow the next instructions to setup the development enviroment.
$ pip install poetry
$ git clone https://github.com/dany2691/activejson.git
$ cd activejson
$ poetry install
To run the test-suite, inside the pybundler directory:
$ poetry run pytest test/ -vv
Daniel Omar Vergara Pérez – @__danvergara __ – daniel.omar.vergara@gmail.com -- github.com/danvergara
Valery Briz - @valerybriz -- github.com/valerybriz
- Fork it (https://github.com/BentoBox-Project/activejson)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request