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 Reference

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

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.2.tar.gz (4.6 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.2-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_flatten_json-0.2.2.tar.gz
Algorithm Hash digest
SHA256 967cd290b818fefc5d42c4a150e2737531da3a81a909472f98558d88365187fc
MD5 dad91d059c4e48b050750bc4e1dcfe8c
BLAKE2b-256 c51c992ecd7fcd8242c44ca34910dc2eaba91d35c98cba13d71cf79b48792319

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_flatten_json-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 113357cf6c3c6c3c17549db50106e00525fc134aad8c30a0d1e365a29295d2fd
MD5 0d20fe00cb9dcf4fc75f6e5386b38e41
BLAKE2b-256 5a0e5b5bc80a09888051903985236db426881b5d9a9fc843aceefeeec0c1cdb7

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