我试图在嵌套的类/对象上运行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))
答案 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\"}]}"