首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中序列化TypeError时“JSON:(Integer)不是JSON序列化的”?

在Python中序列化TypeError时“JSON:(Integer)不是JSON序列化的”?
EN

Stack Overflow用户
提问于 2012-08-14 05:10:05
回答 8查看 143.7K关注 0票数 187

我试图从python向json文件发送一个简单的字典,但我一直收到"TypeError: 1425is not JSON serializable“消息。

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))
EN

回答 8

Stack Overflow用户

发布于 2012-08-14 05:36:26

我找到我的问题了。问题是我的整数实际上是numpy.int64类型。

票数 296
EN

Stack Overflow用户

发布于 2018-05-29 14:32:47

似乎在Python3中将numpy.int64转储到json字符串可能会有问题,Python团队已经就此进行了讨论。更多细节可以在here上找到。

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

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

json.dumps({'value': numpy.int64(42)}, default=convert)
票数 67
EN

Stack Overflow用户

发布于 2020-01-09 13:52:31

正如@JAC在最高评分答案的评论中指出的那样,通用解决方案(适用于所有numpy类型)可以在线程Converting numpy dtypes to native python types中找到。

然而,我将在下面添加我的解决方案版本,因为在我的情况下,我需要一个通用的解决方案,将这些答案与其他线程的答案结合起来。这应该适用于几乎所有的numpy类型。

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

json.dumps({'value': numpy.int64(42)}, default=convert)
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11942364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档