当前位置: 首页 > 知识库问答 >
问题:

datetime.datetime不可JSON序列化[重复]

何兴学
2023-03-14

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

问题是这些列中至少有一列是datetime,我似乎不知道如何序列化这些列以便生成有效的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个答案

佟和平
2023-03-14

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

>>> datetime.now()
datetime.datetime(2016, 3, 8, 11, 37, 24, 123639)

>>> str(datetime.now())
'2016-03-08 11:37:27.511053'

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

丁均
2023-03-14

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)
 类似资料:
  • 我正在学习Python和aws。 我想要的是从JSON响应中提取值。此代码适用于不包含日期值的JSON响应,但在本例中,响应包含日期值。 这是我的密码: 我得到了这个错误: 有人知道解决办法吗?thx

  • 问题内容: 我有一个基本的命令,如下所示: 当我尝试做时,我得到: 我该怎么做才能使我的字典示例可以克服上述错误? 注意: 尽管可能无关紧要,但是字典是从记录的检索中生成的,这些记录是在我打印出来的地方输出的。 问题答案: 原始答案适应了MongoDB“日期”字段表示为: 如果您希望使用通用的Python解决方案序列化为json,请查看@jjmontes的答案以获取无需依赖项的快速解决方案。 当您

  • 问题内容: 我有以下用于序列化查询集的代码; 以下是我的 我需要序列化。但是它说无法序列化。因为列表由Django对象和字典组成。有任何想法吗 ? 问题答案: 并且不能很好地与Django对象配合使用。 Django的内置序列化器只能序列化由django对象填充的查询集: 在您的情况下,其中包含django对象和dict的混合。 一种选择是摆脱中的模型实例,并使用dict将其替换为: 希望有帮助。

  • 问题内容: 在使用Python查询文档上的聚合函数后,我从MongoDB返回了响应,它返回有效响应,我可以打印该响应但不能返回它。 错误: 打印: 但是当我尝试返回时: 这是RESTfull调用: 数据库连接良好,集合也在那里,我得到了有效的预期结果,但是当我尝试返回时,它给了我Json错误。任何想法如何将响应转换回JSON。谢谢 问题答案: 您应该定义自己并使用它: 也可以按以下方式使用它。

  • 在使用Python查询文档上的聚合函数之后,我从MongoDB返回的响应返回了有效响应,我可以打印它,但无法返回它。 错误: 打印: 但当我试图返回时: 这是一个完整的电话: 数据库连接良好,收集也在那里,我得到了有效的预期结果,但当我试图返回它给我Json错误。任何想法如何将响应转换回JSON。谢啦

  • 问题内容: 我有一个基本的命令,如下所示: 当我尝试做时,jsonify(sample)我得到: 我该怎么做才能使我的词典示例可以克服上述错误? 注意:虽然可能不相关,但字典是从mongodb中检索记录生成的,在我打印输出时,输出为 问题答案: 原始答案适应了MongoDB“日期”字段表示为: 如果你希望使用通用的Python解决方案序列化为,请查看的答案以获取无需依赖项的快速解决方案。 当你使用