Flatten nested dictionaries into dotted keys
Python
from collections.abc import Iterator, Mapping
def flatten(data: Mapping, prefix: str = "") -> Iterator[tuple[str, object]]:
"""Yield (dotted.key, value) pairs for a nested mapping."""
for key, value in data.items():
path = f"{prefix}{key}"
if isinstance(value, Mapping):
yield from flatten(value, prefix=f"{path}.")
elif isinstance(value, list):
for index, item in enumerate(value):
yield f"{path}[{index}]", item
else:
yield path, value
if __name__ == "__main__":
payload = {"user": {"name": "Ada", "roles": ["admin", "dev"]}, "active": True}
print(dict(flatten(payload)))