python 2.7:TypeError:< __ main __。嵌套对象在0x ...>不是JSON可序列化的

时间:2014-08-21 11:09:43

标签: python json

我试图在嵌套的类/对象上运行json.dumps方法,并且在 TypeError:< __ main __。嵌套对象在0x ...>处失败不是JSON可序列化的

我应该在课堂上更改什么,以便可以使用JSONEncoder实现的输入参数调用json.dumps方法?

这是一个非常简单的代码来模拟问题:

class leaf_object(object):
    def __init__(self, s):
        self.value = s

class nested_object(object):
    def __init__(self, a, b_list):
        self.a = a
        self.b_list = b_list

if __name__ == "__main__":
    obj = nested_object('a1', [leaf_object('a1.1'),leaf_object('a1.2')])
    import json
    print(json.dumps(obj))

1 个答案:

答案 0 :(得分:0)

您可以使用子类JSONEncoder并实现自己的自定义序列化。所以请使用以下代码:

from json import JSONEncoder

class leaf_object(object):
    def __init__(self, s):
        self.value = s

class nested_object(object):
    def __init__(self, a, b_list):
        self.a = a
        self.b_list = b_list

class MyEncoder(JSONEncoder):
    def default(self, o):
        return o.__dict__
if __name__ == "__main__":
    obj = nested_object('a1', [leaf_object('a1.1'),leaf_object('a1.2')])
    obj=MyEncoder().encode(obj)
    import json
    print(json.dumps(obj))

这是结果:

"{\"a\": \"a1\", \"b_list\": [{\"value\": \"a1.1\"}, {\"value\": \"a1.2\"}]}"