Python-TypeError:“int64”类型的对象不是JSON serializab

2024-05-13 17:32:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,存储商店名称和每日销售计数。我正试图使用下面的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)

获取上面最后一行执行的错误。有人能帮忙修理这个吗。谢谢。。


Tags: 数据storename名称datacount错误update
3条回答

另一个选项是,在创建数据帧时使用dtype=str

例如,如果从csv文件加载store

import pandas as pd
store = pd.read_csv('store.csv', dtype=str)

然后所有东西都有一个可以序列化为json的str类型。

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

import json
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)

# Your codes .... 
json.dumps(data, cls=NpEncoder)

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

'count__c': int(store['count'].iloc[i])

相关问题 更多 >