python 2.7 : TypeError: <__main__.nested_object 对象在 0x...> 不能被 JSON 序列化
我正在尝试对一个嵌套的类或对象使用 json.dumps 方法,但出现了错误,提示TypeError: <__main__.nested_object object at 0x...> 不能被转换为 JSON 格式
我需要在我的类中做什么改动,才能让 json.dumps 方法接受一个 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
if __name__ == "__main__":
obj = nested_object('a1', [leaf_object('a1.1'),leaf_object('a1.2')])
import json
print(json.dumps(obj))
1 个回答
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\"}]}"