189

Pythonからjsonファイルに簡単な辞書を送信しようとしていますが、「TypeError:1425 isnotJSONserializable」というメッセージが表示され続けます。

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

デフォルトの引数を追加すると、書き込みが行われますが、整数値は文字列としてjsonファイルに書き込まれるため、望ましくありません。

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

10 に答える 10

297

問題が見つかりました。問題は、私の整数が実際には type だったことnumpy.int64です。

于 2012-08-13T21:36:25.820 に答える
6

This might be the late response, but recently i got the same error. After lot of surfing this solution helped me.

alerts = {'upper':[1425],'lower':[576],'level':[2],'datetime':['2012-08-08 15:30']}
def myconverter(obj):
        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        elif isinstance(obj, datetime.datetime):
            return obj.__str__()

Call myconverter in json.dumps() like below. json.dumps(alerts, default=myconverter).

于 2020-02-24T13:18:13.063 に答える
1

以下のコードを使用して問題を解決してください。

import json
from numpyencoder import NumpyEncoder
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',cls=NumpyEncoder))
afile.close()
于 2020-06-01T05:25:17.337 に答える