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

在Python中序列化JSON时,“TypeError:(Integer)JSON不可序列化吗?”?

冉丰茂
2023-03-14

我试图从python向json文件发送一个简单的字典,但我一直收到“TypeError:1425不是json可序列化的”消息。

import json
alerts = {'upper':[1425],'lower':[576],'level':[2],'datetime':['2012-08-08 15:30']}
afile = open('test.json','w')
afile.write(json.dumps(alerts,encoding='UTF-8'))
afile.close()

如果我添加默认参数,那么它会写入,但整数值会作为字符串写入json文件,这是不可取的。

afile.write(json.dumps(alerts,encoding='UTF-8',default=str))

共有3个答案

丁振海
2023-03-14

正如@JAC在评分最高的答案的评论中指出的那样,可以在将numpy数据类型转换为本地python类型的线程中找到通用解决方案(适用于所有numpy类型)。

尽管如此,我还是会在下面添加我的解决方案版本,因为在我的案例中,我需要一个将这些答案与其他线程的答案相结合的通用解决方案。这应该适用于几乎所有的numpy类型。

def convert(o):
    if isinstance(o, np.generic): return o.item()  
    raise TypeError

json.dumps({'value': numpy.int64(42)}, default=convert)
罗昕
2023-03-14

看起来可能有一个问题要抛弃numpy。Python 3中的int64转换为json字符串,Python团队已经就此进行了对话。更多详细信息可在此处找到。

Serhiy Storchaka提供了一个解决方法。它工作得很好,所以我把它粘贴在这里:

def convert(o):
    if isinstance(o, numpy.int64): return int(o)  
    raise TypeError

json.dumps({'value': numpy.int64(42)}, default=convert)
祁星阑
2023-03-14

我发现了我的问题。问题是我的整数实际上是typenumpy。int64

 类似资料:
  • 我使用的是 DJango 1.8 和蟒蛇 3.4 当运行下面的视图时,Django抛出类型错误-对象不可JSON序列化 Views.py 我试图从mysql数据库中读取几行数据并显示在html文件中,当上面的视图运行时,我看到下面的错误信息 在HTML页面中,我有一个下拉列表。根据选择的选项,我的Ajax将返回从mysql表获取的记录。 Models.py GreenStats和YellowSta

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

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

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

  • 问题内容: 我正在尝试以JSON形式发送POST请求。 *电子邮件变量的类型为“字节” 我得到错误: 您能告诉我我做错了什么吗? 问题答案: 发生这种情况是因为您要在dict中(特别是)传递一个对象,可能是作为的值。您需要先将其解码为一个对象,然后才能使用它:

  • 问题内容: 我在Web API项目中使用了Dictionary,该项目的序列化方式类似于JSON: 因为我有重复的键,所以我不能再使用Dictionary类型,而现在我正在使用 但这是以这种方式序列化的: 有没有办法像字典一样进行序列化? 谢谢。 问题答案: 如果您使用Newtonsoft Json.NET库,则可以执行以下操作。 定义一个转换器,以所需的方式写入键/值对的列表: 然后使用转换器: