您当前的位置: 首页 >  json

顺其自然~

暂无认证

  • 3浏览

    0关注

    1317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

转json报错:TypeError: Object of type int64 is not JSON serializable

顺其自然~ 发布时间:2022-02-14 11:37:05 ,浏览量:3

错误:TypeError: Object of type 'int64' is not JSON serializable (或者float32)

在使用json格式保存数据时,经常会遇到xxx  is not JSON serializable,也就是无法序列化某些对象格式,我所遇见的是我使用了numpy时,使用了np的数据格式,写入data后,json.dumps(data)失败,我们可以自己定定义对特定类型的对象的序列化,下面看下怎么定义和使用关于np数据类型的自定义。

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

import numpy as np


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

注:pandas中报这个错误也可以使用

关注
打赏
1662339380
查看更多评论
立即登录/注册

微信扫码登录

0.6483s