把物件(變數)從記憶體中變成可儲存或傳輸的過程稱為序列化
如果要在不同的程式語言之間傳遞物件,就必須把物件序列化為標準格式,如果有序列化為json表示出來的就是乙個字串,可以被所有語言讀取,也可以方便的儲存到磁碟或者通過網路傳輸
json和python內建的資料型別對應如下:
json型別
python型別
{}dict
list
"string"
str123.45
int或float
true/false
true/false
null
none
1import
json
2 dic =
3print(type(dic))#
45 j =json.dumps(dic)
6print(type(j))#
78 f = open("
序列化物件
",'w')
9 f.write(j)#
等價於json.dump(dic,f)
10f.close()
1112
#反序列化
13 f = open("
序列化物件")
14 data = json.loads(f.read())#
等價於data = json.load(f)
1.
1import
json
2 dic =
3 ret =json.dumps(dic)
4 res =json.loads(ret)
5print
(dic,type(dic))#
6print
(ret,type(ret))#
7print(res,type(res))#
2.
1import
json
2 dic =
3 ret =json.dumps(dic)
4print(dic,type(dic))#
5print(ret,type(ret))#
如果字典的值為元組,序列化後會轉為列表
3.
1import
json
2 s =
3 s1 =json.dumps(s)
4print
(s1)5#
會報錯typeerror: object of type set is not json serializable
6 集合型別不是可序列化的物件
4.
1typeerror: keys must be str, int, float, bool or none, not tupleimport
json
2 dic =
3 dic1 =json.dumps(dic)
4print(dic1)
會報錯
字典的鍵必須是str,int,float,bool或none,元組不能作為鍵
5.
1import
json
2 dic =
3 with open("
json_file
","a
") as f:
4json.dump(dic,f)
5json.dump(dic,f)
67 with open("
json_file
","r
") as f:
8 dic = json.load(f)
不支援連續的訪問
dumps和loads
在記憶體中做資料轉換:
dumps 資料型別轉成字串 #序列化
loads 字串轉成資料型別 #反序列化
dump和load
直接將資料型別寫入檔案,直接從檔案中讀出資料型別
dump 資料型別寫入檔案 #序列化
load 從檔案讀出資料型別 #反序列化
2.pickle模組
1.支援在python中幾乎所有的資料型別
2.dumps序列化的結果只能是位元組
3.只能在python中使用
4.在和檔案操作的時候,需要用rb,wb的模式開啟檔案
5.可以多次dump和load
序列化模組
模組 乙個py檔案就是乙個模組.python開發效率之高 python的模組非常多,第三方庫.模組分類 1,內建模組 登入模組,時間模組,sys模組,os模組 等等.所有的擴充套件模組 3,自定義模組.自己寫的py檔案.序列化模組.序列化 創造乙個序列.例項化 創造乙個例項 物件 將乙個字典通過網路...
序列化模組
什麼叫序列化 將原本的字典 列表等內容轉換成乙個字串的過程就叫做序列化。那為什麼要序列化呢?比如,我們在python 中寫的一段 需要c上使用,那我們怎麼給?我們能想到的方法就是存在檔案裡,然後在c上再從檔案裡讀出來。但是我們都知道,對於檔案來說是沒有 不是所有的資料型別檔案都能夠識別的比如字典 列...
序列化模組
序列化模組 把某資料型別轉化成字串型別 序列化 字串型別轉化為其他資料型別 反序列化 josn模組 只有很少一部分資料型別能通過josn轉化成字串型別 字典 列表 元組 元組會轉化成列表 import json dic str dic json.dumps dic dumps字典型別轉化成字串型別 ...