#!/usr/bin/python
# -*- coding: UTF-8 -*-
# editor: moofei
#牧飞
#json知道如何处理list,dict,tuple,string等,但他无法序列化它不知道的类型(比如date,datetime,自定义的object)
#如果你遇到 raise TypeError(repr(o) + " is not JSON serializable")
#而你又想要把这个对象里的某些信息保存,或者不让它报错直接返回空字符串。
import json
import decimal
from datetime import date, datetime
class MyClass(object):
def __init__(self):
self.a=11
self.b=21
def MYdefault(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}
elif isinstance(obj, decimal.Decimal):
print 'tttttttttttttttttttttttt'
return str(obj)
else:
#return ''
#return str(obj)
raise TypeError('%r is not JSON serializable' % obj)
my = MyClass()
print json.dumps({'x': decimal.Decimal('5.5'),'a':333.333,'b':[1,{'2':[]}],'now': datetime.now(),
'today': date.today(), 'my': my},default=MYdefault)
#result: {"a": 333.333, "b": [1, {"2": []}], "mc": {"a": 1, "b": 2}, "x": "5.5", "now": "2016-05-25 11:02:28", "today": "2016-05-25"}
python中json/simplejson 序列化/dumps 自定义类型
最新推荐文章于 2024-04-24 17:45:00 发布