Skip to main content

Flatten nested JSON/dicts into dot-notation keys and unflatten back

Project description

philiprehberger-flatten-json

Tests PyPI version License

Flatten nested JSON/dicts into dot-notation keys and unflatten back.

Installation

pip install philiprehberger-flatten-json

Usage

from philiprehberger_flatten_json import flatten, unflatten

nested = {"a": {"b": {"c": 1}}, "d": [2, 3]}

flatten(nested)
# {"a.b.c": 1, "d.0": 2, "d.1": 3}

unflatten({"a.b.c": 1, "d.0": 2, "d.1": 3})
# {"a": {"b": {"c": 1}}, "d": [2, 3]}

# Custom separator
flatten(nested, separator="/")
# {"a/b/c": 1, "d/0": 2, "d/1": 3}

# Max depth
flatten(nested, max_depth=1)
# {"a": {"b": {"c": 1}}, "d": [2, 3]}

# Prefix
flatten(nested, prefix="root")
# {"root.a.b.c": 1, "root.d.0": 2, "root.d.1": 3}

# Keep numeric keys as dict
unflatten({"a.0": 1, "a.1": 2}, list_as_dict=True)
# {"a": {"0": 1, "1": 2}}

API

Function Description
flatten(data, *, separator=".", max_depth=0, prefix="") Flatten nested dict/list into dot-notation keys
unflatten(data, *, separator=".", list_as_dict=False) Restore nested structure from flat dict

Parameters

flatten()

  • data — Nested dict or list
  • separator — Key separator (default ".")
  • max_depth — Max depth to flatten, 0 = unlimited
  • prefix — String to prepend to all keys

unflatten()

  • data — Flat dict with composite keys
  • separator — Key separator used during flattening
  • list_as_dict — When True, numeric keys stay as dict keys instead of converting to lists

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

Project details


Download files

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

Source Distribution

philiprehberger_flatten_json-0.2.5.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_flatten_json-0.2.5-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_flatten_json-0.2.5.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_flatten_json-0.2.5.tar.gz
Algorithm Hash digest
SHA256 49868c7de26029e648eae2880e609bf5cdc70be120aa879fa01a2a9ed4851189
MD5 d78104eb0472402c8a17989785603db4
BLAKE2b-256 64c2dde0012a51b28b7e7336d45b6d18f453cbcca3a99d977851309cc05fafc9

See more details on using hashes here.

File details

Details for the file philiprehberger_flatten_json-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_flatten_json-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 00bb7c2c53a1f80659156ba2ea3513cf380c2ebf53862aa9e3a5e7fe7de11589
MD5 89afdb51624ad64adc525e2dbdcd1a52
BLAKE2b-256 7f8c208ef8261bfabf8e178c5adec8978ccd85287fe3a316dd115207667d2777

See more details on using hashes here.

Supported by

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