2012-08-13 15 views
74

Sto cercando di inviare un dizionario semplice in un file JSON in pitone, ma continuo a ricevere il "TypeError: 1425 non è JSON serializzabile" messaggio."TypeError: (Integer) non è serializzabile in JSON" durante la serializzazione di JSON in 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() 

Se aggiungo l'argomento di default, allora scrive, ma i valori interi vengono scritte nel file JSON come stringhe, che è indesiderabile.

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

possibile duplicato di [json.dump throwing "TypeError: {...} non è serializzabile JSON" su oggetti apparentemente validi?] (Http://stackoverflow.com/questions/10872604/json-dump-throwing-typeerror -is-non-jSON-serializzabile-on-apparentemente-vali) –

+0

funziona per me ... – Hamish

+0

Questo non sembra "duplicato" a questa domanda .. –

risposta

153

Ho trovato il mio problema. Il problema era che i miei numeri interi erano in realtà tipo numpy.int64.

+9

Ho dovuto affrontare anche questo problema, e la tua risposta mi ha indirizzato nella giusta direzione. Volevo solo aggiungere [un collegamento ad un'altra domanda] (http://stackoverflow.com/questions/9452775/converting-numpy-dtypes-to-native-python-types) che può aiutare a risolvere il problema. – JAC

+10

Sarebbe bello se il messaggio di errore non serializzabile JSON potesse visualizzare il tipo dell'oggetto ... –

+3

[Qui] (http://stackoverflow.com/a/27050186/310441) è una soluzione ordinata che utilizza un serializzatore personalizzato . – Owen

Problemi correlati