小能豆

Python – TypeError:类型‘int64’的对象不是可 JSON 序列化的

javascript

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

当执行上面最后一行时出现错误。

我该如何修复这个问题?


阅读 43

收藏
2024-10-17

共1个答案

小能豆

这个错误是因为 pandas 数据框中的 int64 类型不能被直接序列化为 JSON。Salesforce API 期待标准的 Python 数据类型,而 int64 不是标准类型。因此,你可以通过将 int64 数据类型转换为标准的 Python int 类型来解决问题。

你可以在插入 Salesforce 数据之前,使用 .astype(int) 方法将 count 列转换为标准的 Python 整型数据。

下面是修改后的代码:

update_list = []
# 将 count 列转换为标准 Python int 类型
store['count'] = store['count'].astype(int)

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)

这样你可以避免 int64 类型无法被 JSON 序列化的问题。如果问题仍然存在,可以进一步检查 Salesforce 端是否有其他字段要求特殊格式。

2024-10-17