python整理二十四——让simplejson支持datetime类型的序列化
2009-02-13 21:19
696 查看
simplejson是python的一个json包,但是觉得有点不爽,就是不能序列化datetime,稍作修改就可以了:
#e.g
d1= {'name' : 'hong', 'dt' : datetime.datetime.now()}
simplejson.dumps(d1,cls=DatetimeJSONEncoder)
就这么简单。
# 可以序列化时间的json import datetime import decimal import simplejson def safe_new_datetime(d): kw = [d.year, d.month, d.day] if isinstance(d, datetime.datetime): kw.extend([d.hour, d.minute, d.second, d.microsecond, d.tzinfo]) return datetime.datetime(*kw) def safe_new_date(d): return datetime.date(d.year, d.month, d.day) class DatetimeJSONEncoder(simplejson.JSONEncoder): """可以序列化时间的JSON""" DATE_FORMAT = "%Y-%m-%d" TIME_FORMAT = "%H:%M:%S" def default(self, o): if isinstance(o, datetime.datetime): d = safe_new_datetime(o) return d.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT)) elif isinstance(o, datetime.date): d = safe_new_date(o) return d.strftime(self.DATE_FORMAT) elif isinstance(o, datetime.time): return o.strftime(self.TIME_FORMAT) elif isinstance(o, decimal.Decimal): return str(o) else: return super(DatetimeJSONEncoder, self).default(o)
#e.g
d1= {'name' : 'hong', 'dt' : datetime.datetime.now()}
simplejson.dumps(d1,cls=DatetimeJSONEncoder)
就这么简单。
相关文章推荐
- 解决Python自带的json不能序列化data,datetime类型数据问题
- python使用json序列化datetime类型问题处理
- python使用json序列化datetime类型实例解析
- 解决Python自带的json序列化工具不能序列化datetime类型数据问题
- python默认json库处理mysql中datetime,date类型不能序列化json的解决方案
- 让python json encode datetime类型
- JavaScriptSerializer 对 DateTime 数据类型的JSON序列化的问题
- 用js解析经后台json序列化后的C#的DateTime类型数据
- 用js解析经json序列化后的C#的DateTime类型数据
- JavaScriptSerializer 对 DateTime 数据类型的JSON序列化的问题
- JavaScriptSerializer序列化成Json时DateTime类型数据的处理
- Python序列化和反序列化JSON的方法整理
- vb.net 数组的反序列化不支持类型 json
- 用js解析经json序列化后的C#的DateTime类型数据
- Python json.dumps 特殊数据类型的自定义序列化操作
- 用js解析经json序列化后的C#的DateTime类型数据
- webapi datetime类型序列化成json带T且时间不对问题的解决
- 让python json encode datetime类型
- 高性能数据序列化库,可序列化为binary,也可序列化为json,支持C++ java python php objectc 语言,兼容json数据格试,可以互相转换,跨语言交换数据,网络传输,远程调
- JavaScriptSerializer序列化成Json时DateTime类型数据的处理