序列化能夠理解爲:把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()