JSON-like data manipulation and transformation to and from nested parent-child and flat label-value data items.
Project description
flatjsondict: efficient JSON-like data transformation tool
What is it?
flatjsondict is nested JSON-like object transformation tool that provides
FlatJson object for flat Pandas Series index-like label and filesystem
path-like label access and manipulation for nested JSON-like data. Primarily
used to efficently transform Pandas Series with MultiIndex index to nested
JSON-like (dict, list) object and nested JSON-like data to flat Pandas
Series with MultiIndex index.
Labels need to be tuples or path-like strings. The default separator for
path-like text labels is /, but can be configured by constructor or
updated by calling :meth:FlatJson.set_keypath_separator.
Note that FlatJson provides :meth:FlatJson.to_series() to prepare
JSON-like data for efficiently creating Pandas Series object with data
MultiIndex index allowing to efficiently transform nested JSON-like object
to Pandas Series.
Note that FlatJson provides :meth:FlatJson.to_json() to efficiently
create nested JSON-like object from flat tuple-like label dictionary.
Alternatively, FlatJson can be used as the target dictionary-like class when
calling Series.to_dict(FlatJson), then FlatJson.to_json() can be called
to return nested json-like data for use with JSON:API applications.
Examples
Constructing FlatJson from a nested dictionary.
>>> import flatjsondict as fj
>>> d = {'a': 1, 'b': {'c': 3}}
>>> d_fj = fj.FlatJson(data=d)
>>> d_fj
{('a',): 1, ('b', 'c'): 3}
Note that the nested objects are dictionaries hence all label keys are string values.
>>> d = {'a': 1, 'b': ['c', 3]}
>>> d_fj = fj.FlatJson(data=d)
>>> d_fj
{('a',): 1, ('b', 0): 'c', ('b', 1): 3}
Note that the labels keys for nested lists are integer values.
>>> d = {'a': 1, 'b': ['c', 3]}
>>> d_fj = fj.FlatJson(data=d)
>>> d_fj.to_series()
{('a', ''): 1, ('b', 0): 'c', ('b', 1): 3}
Note that for nested object with varying nesting depth the label tuple
length is normalized (padded) when calling :meth:FlatJson.to_series().
Such label length normalization prepares FlatJson data for efficient
creation of Pandas Series objects with MultiIndex index allowing to
transform deeply nested JSON object data to Pandas Series.
Constructing nested json-like data from FlatJson-like dictioaries.
>>> import flatjsondict as fj
>>> d = {('a', ''): 1, ('b', 0): 'c', ('b', 1): 3}
>>> d_fj = fj.FlatJson(data=d)
>>> d_fj.to_json()
{'a': 1, 'b': ['c', 3]}
>>> d_fj.paths()
['a', 'b/0', 'b/1']
Constructing FlatJson from Pandas Series.to_dict().
>>> import pandas as pd
>>> import flatjsondict as fj
>>> d = {('a', ''): 1, ('b', 0): 'c', ('b', 1): 3}
>>> ds = pd.Series(d)
>>> ds.to_dict(fj.FlatJson)
{('a',): 1, ('b', 0): 'c', ('b', 1): 3}
>>> ds.to_dict(fj.FlatJson).to_json()
{'a': 1, 'b': ['c', 3]}
Note that you can pass FlatJson to Pandas Series.to_dict(FlatJson)
to directly derive FlatJson from Pandas Series data. Then use
FlatJson.to_json() to return nested JSON-like data.
Slicing FlatJson using multiple keys.
>>> import flatjsondict as fj
>>> d = {'a': 1, 'b': ['c', 3]}
>>> d_fj = fj.FlatJson(data=d)
>>> d_fj
{('a',): 1, ('b', 0): 'c', ('b', 1): 3}
>>> d_fj.slice(('a',), ('b', 1)).to_json()
{'a': 1, 'b': [3]}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flatjsondict-1.1.0.tar.gz.
File metadata
- Download URL: flatjsondict-1.1.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Linux/5.4.109+
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
554e402a1f84e64243538814cfa4eaf8d92f1ca01266bfeabe7b884bcd3a147c
|
|
| MD5 |
b056d1cc3581f78e55b3f4e7fb356b8a
|
|
| BLAKE2b-256 |
fb1710e298017c8ceadb9a7189d5e8a094227d5ac92412d49d8b55f17538aa6e
|
File details
Details for the file flatjsondict-1.1.0-py3-none-any.whl.
File metadata
- Download URL: flatjsondict-1.1.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Linux/5.4.109+
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31b02a755299f12b7f6d7dbbef662d1fb6ab260938f2b581018411679225df87
|
|
| MD5 |
9f42c73e22890e10c58c21c57fa79a27
|
|
| BLAKE2b-256 |
5c676d3e1ee44fc1deeb9de693df7bacfedc3c89e3164cbf9fd022180b0cf23e
|