resp = web.Response(body=json.dumps(r, cls=CJsonEncoder, ensure_ascii=False, default=lambda o: o.__dict__).encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
当我使用 jinja2 并从 MYSQL 中检索日期时,但显示错误。数据:
2015-09-01 2015-09-04
如何解决?我需要将 jinja2 转换为 django 吗??
这与 Django 或 Jinja2 或您的 Web 框架无关。您的数据包含date对象,而 JSON 没有日期类型,因此json模块不知道如何存储它们。它尝试回退到您的default函数,该函数只是转储对象的所有属性,但该date类型是用 C 实现的,并且没有 Python 属性字典。
您可以通过扩展您的default:
import datetime
def json_default(value):
if isinstance(value, datetime.date):
return dict(year=value.year, month=value.month, day=value.day)
else:
return value.__dict__
resp = web.Response(body=json.dumps(r, cls=CJsonEncoder, ensure_ascii=False, default=json_default).encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
不过,我建议不要将其.__dict__用作全面的后备——您的输出可能包含私人垃圾,并且您的 JSON 在解码时可能不会产生与原始数据类似的任何内容。
| 归档时间: |
|
| 查看次数: |
6764 次 |
| 最近记录: |