2012-08-13 6 views
74

Estoy tratando de enviar un diccionario simple a un archivo json de python, pero sigo recibiendo el mensaje "TypeError: 1425 no es serializable en JSON"."TypeError: (Entero) no es serializable JSON" al serializar JSON en Python?

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() 

Si añado el argumento predeterminado, entonces se escribe, pero los valores enteros se escriben en el archivo JSON como cadenas, lo cual es indeseable.

afile.write(json.dumps(alerts,encoding='UTF-8',default=str)) 
+0

posible duplicado de [json.dump throwing "TypeError: {...} no es serializable JSON" en objeto aparentemente válido?] (Http://stackoverflow.com/questions/10872604/json-dump-throwing-typeerror -is-not-json-serializable-on-aparentemente-vali) –

+0

Funciona para mí ... – Hamish

+0

Esto no parece "duplicar" esa pregunta .. –

Respuesta

153

Encontré mi problema. El problema era que mis enteros eran en realidad tipo numpy.int64.

+9

Tuve que lidiar con este problema también, y su respuesta me indicó la dirección correcta. Solo quería agregar [un enlace a otra pregunta] (http://stackoverflow.com/questions/9452775/converting-numpy-dtypes-to-native-python-types) que puede ayudar a resolver el problema. – JAC

+10

Sería bueno si el mensaje de error JSON no serializable pudiera mostrar el tipo del objeto ... –

+3

[Aquí] (http://stackoverflow.com/a/27050186/310441) es una solución ordenada que usa un serializador personalizado . – Owen