序列化能够理解为:把python的对象编码转换为json格式的字符串,反序列化能够理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。python
json的dumps方法和loads方法,可实现数据的序列化和反序列化json
序列化:dumps(object) 返回一个字符串,它包含一个 pickle 格式的对象。【dict-->json】app
dump(object, file) 将对象写到文件,这个文件能够是实际的物理文件,但也能够是任何相似于文件的对象,这个对象具备 write() 方法,能够接受单个的字符串参数函数
反序列化: loads(string) 返回包含在 pickle 字符串中的对象【json-->dict】this
load(file) 返回包含在 pickle 文件中的对象编码
清单1 :dumps() 和 loads() 的演示
- >>> import cPickle as pickle
- >>> t1 = ('this is a string', 42, [1, 2, 3], None)
接下来,咱们看一些示例,这些示例用到了 dump() 和 load() ,它们使用文件和相似文件的对象。这些函数的操做很是相似于咱们刚才所看到的 dumps() 和 loads() ,区别在于它们还有另外一种能力 — dump() 函数能一个接着一个地将几个对象转储到同一个文件。随后调用 load() 来以一样的顺序检索这些对象。清单 2 显示了这种能力的实际应用:spa
>>> a1 = 'apple' >>> b1 = {1: 'One', 2: 'Two', 3: 'Three'} >>> c1 = ['fee', 'fie', 'foe', 'fum'] >>> f1 = file('temp.pkl', 'wb') >>> pickle.dump(a1, f1, True) >>> pickle.dump(b1, f1, True) >>> pickle.dump(c1, f1, True) >>> f1.close() >>> f2 = file('temp.pkl', 'rb') >>> a2 = pickle.load(f2) >>> a2 'apple' >>> b2 = pickle.load(f2) >>> b2 {1: 'One', 2: 'Two', 3: 'Three'} >>> c2 = pickle.load(f2) >>> c2 ['fee', 'fie', 'foe', 'fum'] >>> f2.close()