python默认json库处理mysql中datetime,date类型不能序列化json的解决方案

今天处理mysql数据库数据时,从数据库中读取了datetime和date类型。不幸运的是默认的json库是不支持

datetime和date类型的序列化的。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
    This module is used to provide a json-extend part for 
    datetime/date serialization.
    @author Alex
    @date 2015/03/29
"""
import json
from datetime import date
from datetime import datetime

class JsonExtendEncoder(json.JSONEncoder):
    """
        This class provide an extension to json serialization for datetime/date.
    """
    def default(self, o):
        """
            provide a interface for datetime/date
        """
        if isinstance(o, datetime):
            return o.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(o, date):
            return o.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, o)

if __name__ == '__main__':
    d = {'now': datetime.now(), 'today': date.today(), 'i': 100}
    ds = json.dumps(d, cls=JsonExtendEncoder)
    print "ds type:", type(ds), "ds:", ds
    l = json.loads(ds)
    print "l  type:", type(l), "ds:", l

因为json.dumps()出来的结果是一个字符串,所以如果这个结果要嵌套在另一个json结构中,

可以采用json.loads(ds)恢复成json的格式。这个时候使用的python的json默认库。

注意到使用json默认库之前,我们已经将datetime和date转换成了字符串了,这是合理的。

好了,到这里,我们就圆满的解决了问题。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值