序列化没有名称空间的python对象

时间:2018-07-24 01:57:31

标签: python-3.x serialization deserialization

我正在使用python 3.x,并且我想使用一种不使用名称空间进行序列化的方式来序列化python对象。只是想问一下是否存在任何库。

我看过-

  • Pickle
  • JsonPickle
  • PyYaml

所有这些实际上都序列化了名称空间。

我不想包含名称空间的原因是-

  • 如果命名空间发生更改,那么这将破坏向后兼容性,并且在我的用例中,我希望序列化的对象向后兼容,即使其中一个导入将其路径更改为其他路径也是如此。
  • 我还要序列化python对象,然后将其导入具有相同类名但成员变量不同或更少的另一个python环境中。

我知道要问的问题似乎太多了,因为为了将某事物反序列化为对象,它需要知道类路径,但是我希望有类似于杰克逊的东西,我告诉它要反序列化为对象并且只是反序列化json(或任何格式)插入对象。

例如:当前的A级-

from test.someclass import SomeClass
class A:
  __init__(self):
    self.someclass = SomeClass()

例如:将来的A级-

from test.core.someclass import SomeClass
class A:
  __init__(self):
    self.someclass = SomeClass()

请注意,SomeClass的路径已更改,因此,如果Class A的对象较早进行了序列化,然后我更改了SomeClass的路径,然后反序列化了该对象,则将中断使用泡菜,pyyaml或jsonpickle。

有没有办法在python中实现这一目标并序列化复杂的数据结构/对象?

0 个答案:

没有答案