TypeError: Object of type 'int32' is not JSON serializable
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)
...
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.