我想使用jsonpickle
序列化一个对象列表。每个对象都包含一个对象列表:
class ImageManipulationConfiguration:
region_list = []
def to_json(self):
return jsonpickle.encode(self.region_list, indent=4,
separators=(',', ': '))
字符串
这里,region_list
包含这个类的对象:
class ImageManipulationRegion:
image_manipulation_element_list = []
型
在image_manipulation_element_list
内部,有继承这个类的类对象:
class ImageManipulationElement
型
当我调用我的to_json
函数时,只有region_list
中的顶级项被序列化,image_manipulation_element_list
列表中的子对象不包括在内。有没有一种方法可以使用jsonpickle
递归地包括所有内容?
4条答案
按热度按时间gxwragnw1#
答:
1.使用
max_depth=4
1.并在下面更换分离器。
字符串
或者使用下面的代码。
型
Reference
yjghlzjz2#
是的,您可以使用jsonpickle.set_encoder_options函数为所有将来的编码设置分隔符和分隔符参数。
字符串
这将输出:
型
image_manipulation_element_list中的子对象现在包含在编码的JSON中。
iyr7buue3#
你可以在jsonpickle中使用
unpicklable
参数来递归地包含所有对象。当调用jsonpickle.encode
来包含所有对象时,将unpicklable
参数设置为True
,即使是那些没有被顶级对象直接引用的对象。以下是如何修改
to_json
方法:字符串
这应该包括
region_list
中的所有对象,包括image_manipulation_element_list
中的子对象。t5zmwmid4#
是的,你可以使用jsonpickle实现对象的递归序列化,方法是为每个类定制序列化过程。为此,你需要为每个类定义一个定制处理程序,指定如何序列化它的示例及其嵌套对象。
下面是如何为类实现这一点:
为每个类定义自定义处理程序:
字符串
现在,当您在ImageManipulationConfiguration的示例上调用to_json时,它将包含每个类的自定义序列化逻辑:
型
通过为每个类提供自定义的序列化逻辑,可以确保在调用to_json时嵌套对象被正确序列化。这允许您使用jsonpickle实现递归序列化。