将字典<int,custom_class =“”>序列化为XML [Python] </int,>

时间:2014-08-04 15:59:37

标签: python xml json serialization dictionary

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

到目前为止,我试过了:

  • 使用内置json模块将其序列化为JSON - &gt; JSON不支持数字作为键,序列化复杂类型似乎非常复杂和不可靠
  • 使用我在网上找到的各种代码段将其序列化为XML - &gt;复杂类型,因为值会产生很多麻烦,大多数解决方案似乎只适用于特定用例

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

我正在使用Python 3.4并且外部依赖项可以,只要我可以使用pip安装它们。

3 个答案:

答案 0 :(得分:2)

正如您所提到的,外部库是可以的,请使用jsonpickle

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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