[Fixed]-TypeError: Object of type 'int32' is not JSON serializable

11๐Ÿ‘

โœ…

The type of each element in diseaseArray is a np.int32 as defined by the line:

diseaseArray=np.array(diseaseArray,dtype=int)  # Elements are int32

int32 cannot be serialized to JSON by the JsonResponse being returned from the view.

To fix, convert the id value to a regular int:

def predict(request):
    ...
    for i in diseaseArray:
        if i not in sym:
            dict={'id': int(i)}  # Convert the id to a regular int
            dictArray.append(dict)
            print(dictArray)
    ...
๐Ÿ‘คWill Keeling

7๐Ÿ‘

Instead of manually casting the values to ints as the accepted answer suggests, you can usually let numpy do that for you.

Instead of calling

diseaseArray=list(set(diseaseArray))

You can call

diseaseArray=diseaseArray.unique().tolist()

This should automatically convert any numpy-specific datatypes in the array to normal Python datatypes. In this case it will cast int32 to int, but it also supports other conversions.

Additionally, using numpys .unique() might give some speedup for large datasets.

๐Ÿ‘คIvo Merchiers

0๐Ÿ‘

You seem to be trying to save non JSON serializable objects.
If you want to save specific objects for later use Iโ€™d recommend you to use pickle.
https://docs.python.org/3/library/pickle.html

๐Ÿ‘คKenstars

Leave a comment