Py学习  »  Python

[精华] dump to json in python class object

爱情的枪 • 9 年前 • 4936 次点击  

如果是dict,要dump成json 是很方便的

data = {'a':"A",'b':(2,4),'c':3.0}
data_string = json.dumps(data)

但是如何要dump object呢?

需要一个encode方法

假设f是一个object

那么,可以采用以下方式

from json import JSONEncoder
>>> class MyEncoder(JSONEncoder):
    def default(self, o):
        return o.__dict__

>>> MyEncoder().encode(f)

或者:

json.dumps(cls=MyEncoder)

具体可参考 : http://stackoverflow.com/questions/3768895/python-how-to-make-a-class-json-serializable

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/823
 
4936 次点击  
文章 [ 2 ]  |  最新文章 9 年前
Py站长
Reply   •   1 楼
Py站长    9 年前

赞 @kinegratii

kinegratii
Reply   •   2 楼
kinegratii    9 年前

更进一步,支持对象嵌套;

def obj2dict(obj):
      # 基本数据类型,直接返回
    if not hasattr(obj,'__dict__'):
        return obj
    res = {}
    for k,v in obj.__dict__.items():
        if k.startswith('-'):
            continue
        if isinstance(v,list):
            ele = [obj2dict(item) for item in v]
        else:
            ele = obj2dict(v)
        res[k] = ele
    return res

使用方法:

json.dumps(obj, default=obj2dict)

具体可参考:https://github.com/kinegratii/PySnippet/tree/master/obj2json