【发布时间】:2019-01-29 05:38:14
【问题描述】:
假设我有这样的类层次结构:
class SerializableWidget(object):
# some code
class WidgetA(SerilizableWidget):
# some code
class WidgetB(SerilizableWidget):
# some code
我希望能够将WidgetA 和WidgetB(以及可能的其他小部件)的实例序列化为json 的文本文件。然后,我希望能够在事先不知道它们的具体类的情况下反序列化它们:
some_widget = deserielize_from_file(file_path) # pseudocode, doesn't have to be exactly a method like this
并且some_widget 需要从SerilizableWidget 的精确子类构造。我该怎么做呢?我需要在层次结构的每个类中覆盖/实现哪些方法?
假设上述类的所有字段都是原始类型。如何覆盖一些 __to_json__ 和 __from_json__ 方法,诸如此类?
【问题讨论】:
-
谁认为这太宽泛而低估了我?我怎样才能使它更具体?它没有生产力!
-
你看过像Marshmallow这样的库吗?
-
为什么我需要一个额外的库,我可以不直接调用 json.dumps() 和 json.load() 吗?我需要做的就是在我的类中实现正确的方法。我错过了什么?
-
您并不严格需要第三方库,但序列化比您想象的要复杂得多(因此存在 Marshmallow 和其他类似库)。我建议查看我提供的链接并做出自己的决定。例如,Marshmallow 希望您定义模式,而 Django REST 框架希望您构建序列化程序。为什么你认为这两个都让你做体力活?
-
您知道我将如何在上述设置中执行此操作吗?假设这些类的所有字段都是原始类型。谢谢
标签: python json serialization json-deserialization jsonserializer