python
data_error
ai_generated
true
类型错误:datetime 类型的对象不可 JSON 序列化
TypeError: Object of type datetime is not JSON serializable
ID: python/fastapi-json-encode-error
80%修复率
85%置信度
0证据数
2024-12-01首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
| 3.10 | active | — | — | — |
根因分析
FastAPI 路径操作返回了 Python datetime 对象,但 JSON 编码器无法处理
English
FastAPI 路径操作返回了 Python datetime 对象,但 JSON 编码器无法处理
解决方案
-
95% 成功率 使用 Pydantic 模型并定义字段类型
from pydantic import BaseModel class Item(BaseModel): created_at: datetime class Config: json_encoders = {datetime: lambda v: v.isoformat()} -
90% 成功率 在返回前手动转换
return {'created_at': datetime.now().isoformat()}
无效尝试
常见但无效的做法:
-
手动将 datetime 转为字符串但忽略时区
60% 失败
可能导致时区信息丢失
-
使用 json.dumps 并设置默认参数
70% 失败
FastAPI 使用自己的 JSON 编码器,自定义可能被覆盖