2012-08-13 29 views
74

Tôi đang cố gắng gửi một từ điển đơn giản đến một tệp json từ python, nhưng tôi tiếp tục nhận được thông báo "TypeError: 1425 không phải là JSON serializable"."LoạiError: (Integer) không phải là JSON serializable" khi serializing JSON trong 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() 

Nếu tôi thêm đối số mặc định, thì nó viết, nhưng giá trị số nguyên được ghi vào tệp json dưới dạng chuỗi không mong muốn.

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

bản sao có thể có của [json.dump throwing "TypeError: {...} không phải là JSON serializable" trên đối tượng có vẻ hợp lệ?] (Http://stackoverflow.com/questions/10872604/json-dump-throwing-typeerror -is-not-json-serializable-on-dường như-vali) –

+0

Làm việc cho tôi ... – Hamish

+0

Điều này dường như không "trùng lặp" câu hỏi đó .. –

Trả lời

153

Tôi đã tìm thấy sự cố của mình. Vấn đề là các số nguyên của tôi đã thực sự gõ numpy.int64.

+9

Tôi đã phải đối phó với vấn đề này quá, và câu trả lời của bạn chỉ cho tôi đi đúng hướng. Tôi chỉ muốn thêm [một liên kết đến một câu hỏi khác] (http://stackoverflow.com/questions/9452775/converting-numpy-dtypes-to-native-python-types) có thể giúp thực sự giải quyết vấn đề. – JAC

+10

Điều đó sẽ tuyệt vời nếu thông báo lỗi không thể thực hiện JSON có thể hiển thị loại đối tượng ... –

+3

[Ở đây] (http://stackoverflow.com/a/27050186/310441) là một giải pháp gọn gàng sử dụng bộ nối tiếp tùy chỉnh . – Owen

Các vấn đề liên quan