0
点赞
收藏
分享

微信扫一扫

TypeError: Object of type int64 is not JSON serializable

问题

在使用json.dumps(param)将python对象转成json的过程中出现了,如下问题: TypeError: Object of type int64 is not JSON serializable

原因分析

经过对字典的数据进行debug发现,字典中的value对应的类型是numpy.int64, 正常情况下应该是numpy.float64。

代码

#########1.首先,继承json.JSONEncoder,自定义序列化方法。

class NpEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, np.integer):
return int(obj)
elif isinstance(obj, np.floating):
return float(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
else:
return super(NpEncoder, self).default(obj)
############2.使用dumps方法(我们可以直接把dict直接序列化为json对象)加上 cls=NpEncoder,data就可以正常序列化了

json.dumps(data, cls=NpEncoder)
############其实,很简单,自定义一个序列化方法,然后dumps的时候加上cls=NpEncoder


举报

相关推荐

0 条评论