Python 内置的 json 模块默认无法直接序列化 dataclass 实例。以下提供三种从基础到进阶的方案,覆盖简单场景、复用场景及生产环境场景。
方法一:基础方案(dataclasses.asdict + json.dumps)
这是官方推荐的基础方案,通过 dataclasses.asdict() 将数据类实例转为字典,再用 json.dumps() 序列化,适合简单的非嵌套数据类。
import json
from dataclasses import dataclass, asdict
# 定义你的数据类
@dataclass
class EcommerceData:
order_id: str
user_id: int
amount: float
is_paid: bool
# 创建数据类实例
data_instance = EcommerceData(
order_id="ORD20260113001",
user_id=10086,
amount=299.99,
is_paid=True
)
# 优雅转换为 JSON
json_str = json.dumps(asdict(data_instance), ensure_ascii=False, indent=2)
print(json_str)
输出结果:
{
"order_id": "ORD20260113001",
"user_id": 10086,
"amount": 299.99,
"is_paid": true
}
关键解释:
asdict(data_instance):将 dataclass 实例转为嵌套字典(支持嵌套 dataclass);


