datetime.datetime不是JSON可序列化的

时间:2016-03-08 14:27:42

标签: python datetime

我有一个Python类,用于检索表中的所有列并返回带有此数据的JSON。

问题是这些列中至少有一列是日期时间,我似乎无法理解如何序列化列,以便生成有效的JSON。

我的课程如下:

class GetTodos(Resource):
    def get(self):
        con = cx_Oracle.connect('brunojs/bdpf5@127.0.0.1/orcl')
        cur = con.cursor()
        cur.execute("select * from organite_repository")
        r = [dict((cur.description[i][0], value) \
                for i, value in enumerate(row)) for row in cur.fetchall()]
        cur.connection.close()
        return (r[0] if r else None) if None else r 

有关此的任何提示吗?

2 个答案:

答案 0 :(得分:25)

JSON没有默认的日期时间类型,因此这就是Python无法自动处理的原因。所以你需要以某种方式将日期时间变成字符串。我认为最好的方法是编写一个自定义处理程序来帮助json模块。

import datetime
import json

def datetime_handler(x):
    if isinstance(x, datetime.datetime):
        return x.isoformat()
    raise TypeError("Unknown type")

json.dumps(data, default=datetime_handler)

答案 1 :(得分:2)

一种简单的方法是将数据转换为字符串。 这样,您就可以使用json进行转储。

Fragment is not attached to activity

但是,您也可以实现一个序列化器来根据需要转换数据。