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

python-type error:“int 64”类型的对象不是JSON可序列化的

公羊光明
2023-03-14

我有一个存储店铺名称和每日销售额的数据框架。我尝试使用下面的Python脚本将其插入Salesforce。

但是,我收到以下错误:

TypeError: Object of type 'int64' is not JSON serializable

下面,是数据框的视图。

Storename,Count
Store A,10
Store B,12
Store C,5

我使用以下代码将其插入Salesforce。

update_list = []
for i in range(len(store)):
    update_data = {
        'name': store['entity_name'].iloc[i],
        'count__c': store['count'].iloc[i] 
    }
    update_list.append(update_data)

sf_data_cursor = sf_datapull.salesforce_login()
sf_data_cursor.bulk.Account.update(update_list)

执行上面的最后一行时,我得到了错误。

我该如何解决这个问题?

共有3个答案

孔欣可
2023-03-14

我将把我的答案作为@Jie杨的出色解决方案的更稳定一点的版本。

numpycompder及其存储库。

from numpyencoder import NumpyEncoder

numpy_data = np.array([0, 1, 2, 3])

with open(json_file, 'w') as file:
    json.dump(numpy_data, file, indent=4, sort_keys=True,
              separators=(', ', ': '), ensure_ascii=False,
              cls=NumpyEncoder)

如果你深入研究hmallen的代码在numpycompder/numpyencoder.py文件中,你会发现它与@杨洁的回答非常相似:


class NumpyEncoder(json.JSONEncoder):
    """ Custom encoder for numpy data types """
    def default(self, obj):
        if isinstance(obj, (np.int_, np.intc, np.intp, np.int8,
                            np.int16, np.int32, np.int64, np.uint8,
                            np.uint16, np.uint32, np.uint64)):

            return int(obj)

        elif isinstance(obj, (np.float_, np.float16, np.float32, np.float64)):
            return float(obj)

        elif isinstance(obj, (np.complex_, np.complex64, np.complex128)):
            return {'real': obj.real, 'imag': obj.imag}

        elif isinstance(obj, (np.ndarray,)):
            return obj.tolist()

        elif isinstance(obj, (np.bool_)):
            return bool(obj)

        elif isinstance(obj, (np.void)): 
            return None

        return json.JSONEncoder.default(self, obj)
裴弘
2023-03-14

您可以定义自己的编码器来解决这个问题。

import json
import numpy as np

class NpEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.integer):
            return int(obj)
        if isinstance(obj, np.floating):
            return float(obj)
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return super(NpEncoder, self).default(obj)

# Your codes .... 
json.dumps(data, cls=NpEncoder)
夏侯玄天
2023-03-14

json不能识别NumPy数据类型。在序列化对象之前,将数字转换为Pythonint

'count__c': int(store['count'].iloc[i])
 类似资料:
  • 问题内容: 我使用Python Flask Restful API遇到问题,并且数据进入Elasticsearch,当我用Postman发布新数据时,问题是: TypeError:“ Response”类型的对象不可JSON序列化 你能帮助我吗? 模型: 视图: 错误: 编辑:我发现了问题。它在def post(self,people_id)方法中: 新队: 问题答案: 这可以简单地通过以下方式完

  • 我有一个看起来很常见的问题,但到目前为止,我还没有找到一个适合我的解决方案。我想我只是错过了一些小事情,但我已经崩溃了,请求帮助。我正在尝试使用flask和pymongo获得json输出。 以下是控制台中使用print(结果)的对象: 当我试图返回时,我得到了错误: TypeError: ObjectId类型的对象不是JSON可序列化的 类联系人(资源): 我试过bson。json_util建议。

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

  • 我正在尝试将文件从mongoDB读取到本地。 我的代码如下:STRING=“myLocalPath”PATH=STRING.json 我得到错误-对象类型'ObjectId'是不是JSON序列化...请建议。

  • 我有一个api,我正在尝试使用Flask Pymongo存储/发布一个用户对象。 但是,我得到了以下错误 文件“/home/kay/.local/share/virtualenvs/server-iT4jZt3h/lib/python3.7/site-packages/flask/json/i│ 尼特。py”,第321行,在jsonify中 │ 转储(数据,缩进=缩进,分隔符=分隔符)“\n”,│

  • 我正在为我的不和谐机器人创建autovc命令,但我遇到了一些错误。代码: 错误: 文件“C:\Users\illus\AppData\Local\Programs\Python\39\lib\site packages\discord\ext\commands\core.py”,第85行,在包装的ret=await coro(*args,**kwargs)文件“d:\BOT\test.py”,第3