【问题标题】:Serialize dictionary <int, custom_class> to XML [Python]将字典 <int, custom_class> 序列化为 XML [Python]
【发布时间】:2014-08-04 15:59:36
【问题描述】:

我正在尝试使用字典缓存从 Internet 下载的图像的元数据(我对图像本身不感兴趣)。图像的 id (int) 是键,代表元数据的 自定义类 是值。
我想在程序退出之前把这个字典写到一个文件中,这样下次启动时我就不必再次下载信息了,但是我在序列化它时遇到了一些麻烦。

到目前为止我尝试过:

  • 使用内置 json 模块将其序列化为 JSON -> JSON 不支持数字作为键,序列化复杂类型似乎相当复杂且不可靠
  • 使用我在网上找到的各种 sn-ps 将其序列化为 XML -> 复杂类型作为值会产生很多麻烦,并且大多数解决方案似乎只适用于特定用例

如何序列化字典(int、custom_class)?序列化的格式应该是人类可读的并且必须是可反序列化的。

我使用的是 Python 3.4,外部依赖项是可以的,只要我可以使用 pip 安装它们。

【问题讨论】:

    标签: python xml json serialization dictionary


    【解决方案1】:

    正如你提到的外部库是可以的,使用jsonpickle

    【讨论】:

      【解决方案2】:

      你可以试试内置的pickle 模块。如果您使用pickle.dumps(myobj, protocol=0),它会返回一个“人类可读”的序列化字符串。可以阅读,但大多数人会发现它比 JSON 或 XML 更难阅读。优点是pickle可以处理很多在JSON中有问题的复杂数据结构。避免依赖另一个外部库也可能很有吸引力。

      【讨论】:

        【解决方案3】:

        通过PyYAML 包使用YAML。您甚至可以create custom markup tags 为您的课程。

        【讨论】:

          猜你喜欢
          • 2010-11-04
          • 1970-01-01
          • 2021-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多