1. 程式人生 > >json與pickle模塊

json與pickle模塊

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模塊