如果你遇到 raise TypeError(repr(o) + " is not JSON serializable")
而你又想要把这个对象里的某些信息保存,或者不让它报错直接返回空字符串。
do it like this:
import json
from datetime import date, datetime
class MyClass(object):
def __init__(self):
self.a=1
self.b=2
def _default(obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj, date):
return obj.strftime('%Y-%m-%d')
elif isinstance(obj, MyClass):
return {'a':obj.a,'b':obj.b}
else:
#return ''
#return str(obj)
raise TypeError('%r is not JSON serializable' % obj)
mc = MyClass()
print json.dumps({'now': datetime.now(), 'today': date.today(), 'mc': mc},default=_default)
#==> {"mc": {"a": 1, "b": 2}, "now": "2012-08-16 19:50:58", "today": "2012-08-16"}