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

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

公西国发
2023-03-14

我正在学习Python和aws。

我想要的是从JSON响应中提取值。此代码适用于不包含日期值的JSON响应,但在本例中,响应包含日期值。

这是我的密码:

import datetime
from datetime import date, datetime
import boto3
import json

client = boto3.client('lex-models')

response = client.get_utterances_view(
          botName='CreateServicesBot',
          botVersions=[
                     '$LATEST',
                      ],
          statusType='Missed'
          )

with open('/tmp/output.json', 'w') as data:
          json.dump(response,data)

with open('/tmp/output.json') as f:
          data = json.load(f)
ustr=data["utteranceString"]
print ustr

我得到了这个错误:

TypeError:datetime。datetime(2018,6,7,9,44,38146000,tzinfo=tzlocal())不可JSON序列化

有人知道解决办法吗?thx

共有2个答案

贾兴学
2023-03-14

我照你说的做了

import datetime
from datetime import date, datetime
import boto3
import json

client = boto3.client('lex-models')

response = client.get_utterances_view(
    botName='CreateServicesBot',
    botVersions=[
        '$LATEST',
    ],
    statusType='Missed'
)
response[lastUtteredDate] = response[lastUtteredDate].strftime("%Y-%m-%d 
%H:%M:%S")
response[firstUtteredDate] = response[firstUtteredDate].strftime("%Y-%m-%d 
%H:%M:%S")


with open('/tmp/output.json', 'w') as data:
    json.dump(response,data)


with open('/tmp/output.json') as f:
    data = json.load(f)
ustr=data["utteranceString"]
print ustr

我得到了这个错误

名称错误:名称'lastUtteredDate'未定义

当我打印响应时,我得到了这个(第一个块)

{u'utherments':[{u'utherments':[{u'count':49,u'utherings':u'hello',

岳迪
2023-03-14

正如错误所示,您正试图将datetime转储到json中。datetime对象,这是不可能的。

您可以做的是将这些对象转换为字符串,然后将其转储。假设包含日期时间的字段。datetime被称为date,那么在导出到json文件之前,您需要执行以下操作

response[date] = response[date].strftime("%Y-%m-%d %H:%M:%S")

 类似资料:
  • 我在Python中有一个类,用于检索表中的所有列,并返回包含此数据的JSON。 问题是这些列中至少有一列是datetime,我似乎不知道如何序列化这些列以便生成有效的JSON。 我的班级如下: 有什么线索吗?

  • 问题内容: 我有一个基本的命令,如下所示: 当我尝试做时,我得到: 我该怎么做才能使我的字典示例可以克服上述错误? 注意: 尽管可能无关紧要,但是字典是从记录的检索中生成的,这些记录是在我打印出来的地方输出的。 问题答案: 原始答案适应了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解决方案序列化为,请查看的答案以获取无需依赖项的快速解决方案。 当你使用