json與pickle模塊
阿新 • • 發佈:2018-06-20
with open 不同 load 缺點 dumps 因此 pick TE 序列 ①
②
①
②
①
Python-19
1. json與pickle模塊
什麽是序列化和反序列化
- 序列化:是將內存中的數據結構,轉換成一種中間格式,將轉化後的中間格式存儲到硬盤,或者基於網絡傳輸
- 反序列化:是將硬盤中或者網路中傳過來的中間格式,轉換成內存中的數據結構
2. 序列化和反序列化有什麽用
- 將狀態通過中間格式存儲到硬盤,可以保存程序的運行狀態
- 數據可以跨平臺交互,不同的編程語言,通過序列化成中間格式就可以互相交互
- 存到硬盤的文本文件都是字符串,再次使用時,需要將硬盤中的數據轉化成以前的數據類型狀態
3. json與pickle模塊的區別
① json
- 優點:
jison
具有跨平臺性,所有編程語言都能轉成json
格式- 缺點:只能支持
python
的部分數據類型
② pickle
- 優點:支持
python
的所有數據了理性- 缺點:
pickle
只能識別python
,不能跨平臺
③ JSON類型和Python類型的對應關系
4. json的的序列化
① json.dumps(內存的數據)
- 說明:
json
不能識別單引號,只能使用雙引號,因此而,json
序列化的過程中會把單引號轉成雙引號
# 導入json模塊 import json # 內存中數據 dic={‘name‘:‘xut‘,‘age‘:18,‘sex‘:‘male‘} # json序列化:內存中的數據類型---->json中間格式 json_str=json.dumps(dic) # print(json_str,type(json_str)) # 將序列化中間格式寫到文件 with open(r‘db.json‘,‘wt‘,encoding=‘utf-8‘) as f: f.write(json_str)
② json.dump(內存中數據對象,文件))
json.dump
可以將上面的兩步進行合並
import json
dic={‘name‘:‘xut‘,‘age‘:18,‘sex‘:‘male‘}
with open(r‘db.json‘,‘wt‘,encoding=‘utf-8‘) as f:
json.dump(dic,f)
③ 總結
- 序列化不同的數據類型,就寫到不同的文件中
5. json的反序列化
① json.loads(文件中的中間格式)
json與pickle模塊