Back to results for “JSON & Data Serialization”
Python › Dataclasses & NamedTuples

How do you convert a dataclass instance to and from a dictionary using dataclasses.asdict() and manual reconstruction?

Advanced

Answer

dataclasses.asdict(instance) recursively converts a dataclass instance (including NESTED dataclasses) into a plain dictionary, useful for JSON serialization; there's no built-in 'fromdict', so reconstruction typically uses `ClassName(**data)` for simple flat cases, or a custom classmethod for nested structures.
from dataclasses import dataclass, asdict

@dataclass
class Address:
    city: str

@dataclass
class User:
    name: str
    address: Address

u = User("Sam", Address("NYC"))
print(asdict(u))  # {'name': 'Sam', 'address': {'city': 'NYC'}} -- fully recursive
Real-world example Serializing a dataclass instance (including nested dataclasses) into a plain dict, ready for json.dumps().

Common follow-ups: Why does asdict() perform a DEEP COPY of mutable field values by default, and how would you avoid that overhead?