Python 中 class 的 JSON 序列化
Posted on 2015-08-17 20:20 in Python
在Java中如果定义一个class,是十分方便JSON序列化的,比如说使用 jackson lib。
但是在Python中如果使用json.dumps(a),a如果不是一个简单类型的就会报错:
TypeError: <__main__.A instance at 0x109d553b0> is not JSON serializable
其实Python的class也十分方便JSON序列化,需要一小段代码就可以:
import json
from json import JSONEncoder
def obj2dict(obj):
memberlist = [m for m in dir(obj)]
_dict = {}
for m in memberlist:
if m[0] != "_" and not callable(m):
_dict[m] = getattr(obj, m)
return _dic
class ClsEncoder(JSONEncoder):
def default(self, o):
return obj2dict(o)
json.dumps(a, cls=ClsEncoder)
在使用json.dumps的时候指定ClsEncoder就能够达到目的