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

7.6K    Asked by ChrisEVANS in Python , Asked on Apr 13, 2021

I have a Dataframe that stores Store name and daily sales count. I am trying to insert this to Salesforce using the below Python script. I, however, get an error.

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

Given below is the view of the dataframe:

Storename,Count

Store A,10

Store B, 12

Store C, 5

I use the below code to insert it to 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)

Get the error the last line above gets executed. Could anyone assist in fixing this. Thanks.


Answered by Chris EVANS

NumPy data types don't recognize json. To get rid of “object of type int64 is not json serializable” you need to convert the number to a Python int before serializing the object.

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

Your Answer

Answer (1)

The error message "TypeError: Object of type 'int64' is not JSON serializable" typically occurs when trying to serialize an integer using the json.dumps() function in Python, and the integer is of type int64 from the NumPy library.


To resolve this issue, you can convert the int64 object to a standard Python integer before serializing it to JSON. You can do this using the int() function to explicitly cast the value to an integer. Here's an example:

import json
import numpy as np
# Example of an int64 object
int64_value = np.int64(42)
# Convert int64 to Python integer
standard_int = int(int64_value)
# Serialize the integer to JSON
json_data = json.dumps(standard_int)
print(json_data)

In this example, int64_value is the NumPy int64 object that we want to serialize. By converting it to a standard Python integer using int(int64_value), we ensure that it can be serialized to JSON without raising the TypeError. Finally, we use json.dumps() to serialize the integer to a JSON-formatted string.

Make sure to replace int64_value with the actual variable or value that you are trying to serialize.


6 Months

Interviews

Parent Categories