I am trying to send a simple dictionary to a json file from python, but I keep getting the "TypeError: 1425 is not JSON serializable" message.
import json
alerts = {'upper':[1425],'lower':[576],'level':[2],'datetime':['2012-08-08 15:30']}
afile = open('test.json','w')
afile.write(json.dumps(alerts,encoding='UTF-8'))
afile.close()
If I add the default argument, then it writes, but the integer values are written to the json file as strings, which is undesirable.
afile.write(json.dumps(alerts,encoding='UTF-8',default=str))
You have Numpy Data Type, Just change to normal int() or float() data type. it will work fine.
It seems like there may be a issue to dump numpy.int64 into json string in Python 3 and the python team already have a conversation about it. More details can be found here.
There is a workaround provided by Serhiy Storchaka. It works very well so I paste it here:
Alternatively you can convert your object into a dataframe first:
and then save this
dataframe
in ajson
file:Hope this helps
I found my problem. The issue was that my integers were actually type
numpy.int64
.