python JSONpython
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱讀和編寫。JSON的數據格式其實就是python裏面的字典格式,裏面能夠包含方括號括起來的數組,也就是python裏面的列表。編程
在python中,有專門處理jason格式的模塊——jason和picklejson
jason模塊提供了四個方法:dumps、 dump 、loads、load數組
pickle模塊也提供了四個功能:dumps、 dump、loads、load編程語言
1、dumps和dump函數
dumps和dump序列化方法編碼
dumps只完成了序列化strspa
dump必須傳文件描述符,將序列化的str保存在文件中3d
文件操做:對象
2、loads和load
loads和load反序列化方法
loads只完成了反序列化。
load只接受文件描述符,完成讀取文件和反序列化
3、json和pickle模塊
jason模塊和pickle模塊都有dumps、dump、loads、load四種方法,並且用法同樣
不一樣的是json模塊序列化出來是通用格式,其餘編程語言都認識,就是普通字符串
而pickle模塊序列化出來的只有python能夠識別,其餘編程語言不認識,表現爲亂碼
不過pickle能夠序列化函數,可是其餘文件想用該函數,在該文件中須要有該文件的定義(定義和參數必須相同,內容能夠不一樣)
×四.json和pickle序列化區別
由此課件json和pickle序列化後數據是由不一樣的,若是進行文件操做json只需對文件進行str數據類型的‘r’、‘w’、‘r+’、‘w+’、‘a’方式打開讀寫,load\dump操做;而pickle則是對文件進行bytes數據類型的‘rb’\'wb'\'ab'等之類的load\dump操做。
五python對象與json對象的對應關係
五總結
一、json序列化方法
dumps:無文件操做 dump:序列化+寫入文件
二、jason反序列化方法:
loads:無文件操做 load:讀文件+反序列化
三、json模塊序列化的數據更通用
pickle模塊序列化數據僅python可用,但功能強大,能夠序列化函數。
四、json模塊能夠序列化和反序列化的數據類型見上表
五、格式化寫入文件利用 indent=4
cPckle
Python標準庫提供pickle和cPickle模塊。cPickle是用C編碼的,在運行效率上比pickle要高,可是cPickle模塊中定義的類型不能被繼承(其實大多數時候,咱們不須要從這些類型中繼承,推薦使用cPickle)。cPickle和pickle的序列化/反序列化規則是同樣的,使用pickle序列化一個對象,可使用cPickle來反序列化。同時,這兩個模塊在處理自引用類型時會變得更加「聰明」,它不會無限制的遞歸序列化自引用對象,對於同一對象的屢次引用,它只會序列化一次。