Python 允许你使用称为 的流行数据交换格式,而不是让用户不断的编写和调试代码以将复杂的数据类型保存到文件中。名为 json
的标准模块可以采用 Python 数据层次结构,并将它们转化为字符串表示形式;这个过程称为 serializing 。从字符串表示中重建数据称为 deserializing 。在序列化和反序列化之间,表示对象的字符串可能已存储在文件或数据中,或通过网络连接发送到某个远程机器。
注解
如果你有一个对象 x
,你可以用一行简单的代码来查看它的 JSON 字符串表示:
函数的另一个变体叫做 ,它只是将对象序列化为 。因此,如果 f
是一个 text file 对象,我们可以这样做:
这种简单的序列化技术可以处理列表和字典,但是在JSON中序列化任意类的实例需要额外的努力。 模块的参考包含对此的解释。
参见
与 JSON 不同,pickle 是一种允许对任意复杂 Python 对象进行序列化的协议。因此,它为 Python 所特有,不能用于与其他语言编写的应用程序通信。默认情况下它也是不安全的:如果数据是由熟练的攻击者精心设计的,则反序列化来自不受信任来源的 pickle 数据可以执行任意代码。