1. 中文显示Unicode
python的json.dumps方法默认会输出unicode类型。
解决方法
要输出中文需要指定ensure_ascii参数为False
2. 序列化日期时间出错
使用python自带的json.dumps方法转换数据为json的时候,如果格式化的数据中有datetime类型的数据时会报错
TypeError: datetime.datetime(2014, 03, 20, 12, 10, 44) is not JSON serializable
官方文档中关于json.dumps方法的一个参数(cls)说明:
To use a custom JSONEncoder subclass (e.g. one that overrides the default() method to serialize additional types), specify it with the cls kwarg; otherwise JSONEncoder is used.
扩展了一个JSONEncoder出来用来格式化时间
from datetime import datetime, date
import json
class CJsonEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj, date):
return obj.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, obj)
# 使用
json.dumps(cursor.fetchall(), indent=2, cls=CJsonEncoder, ensure_ascii=False)