json序列化與反序列化

2021-09-28 13:29:04 字數 1590 閱讀 3667

1.什麼是序列化與反序列化?

序列化就是將記憶體中的資料結構轉換成一種中間格式儲存到硬碟或者基於到網路傳輸。

反序列化就是將硬碟中或者網路中傳來的一種資料格式轉換成記憶體中資料格式。

2.為什麼要有序列化和反序列化?

1.可以儲存程式的執行狀態。(比如遊戲中使用者在某個狀態下線,使用者遊戲的資料需要儲存,這時候就可以用序列化直接把使用者狀態儲存到json檔案中。)

2.可以實現資料的跨平台互動(通過序列化儲存的資料都是以字串的形式存在,字串是所有語言共有的資料型別)

3.序列化與反序列化怎麼用?

json特點:

優點:跨平台性好 缺點:只能支援python的部分資料型別,不支援元組,集合,自定義類等。但是已經足夠用,所以平常還是json用的比較多。

pickel特點:

優點:支援所有python資料型別  缺點:跨平台性差,只能支援python。

json序列化:兩個過程 dump,dumps

1.先把資料型別轉換成json對應的格式。

2.把序列化後的字串存入json檔案

反序列化:兩個過程 load,loads

1.從json檔案中讀取序列化後字串

2.再通過反序列化dumps方法把字串轉成對應的資料型別。

json序列化

import json

dic=

#序列化:記憶體中的資料型別------>中間格式json

1、序列化得到json_str 序列化以後的資料型別就變成字串

json_str=json.dumps(dic)

2、把json_str寫入檔案

with open('db.json','wt',encoding='utf-8') as f:

f.write(json_str)

#1和2合為一步

with open('db.json','wt',encoding='utf-8') as f:

json.dump(dic,f) # 序列化物件 目標檔案

print(json_str,type(json_str)) # json格式不能識別單引號,全都是雙引號

json反序列化

import json

dic=

#反序列化:中間格式json-----》記憶體中的資料型別

#1、從檔案中讀取json_str

with open('db.json','rt',encoding='utf-8') as f:

json_str=f.read()

#2、將json_str轉成記憶體中的資料型別

dic=json.loads(json_str) # loads的物件必須是字串

#1和2可以合作一步

with open('db.json','rt',encoding='utf-8') as f:

dic=json.load(f) # 檔案物件

print(dic['***'])

更多專業前端知識,請上

【猿2048】www.mk2048.com

json序列化 反序列化

json序列化 json的dumps方法可以將json格式資料序列為python的相關資料型別,比如str,常用於列印,另外,在序列化時,中文漢字被轉換為unicode編碼,在dumps函式中新增引數ensure ascii false可解決 dumps的indent參考可以調整顯示格式,即縮排,一...

JSON序列化與反序列化列舉

一 json序列化與反序列化列舉 1.這個示例使用了乙個jsonconverter定製如何序列化json與反序列化列舉 using system using system.collections.generic using system.linq using system.text using go...

json陣列序列化與反序列化

前台有多組資料以json陣列 引數為modeljson 傳過來需要存入資料庫時 格式如下,每個花括號對應實體類user的相應字段 當以這種形式傳過來時,將其轉為list,再for迴圈進行儲存 listulist jsonutil.tolist modeljson,user.class for use...