在python中,
序列化可以理解為將python物件編碼轉化為json格式的字串
反序列化可以理解為把json格式的字串解碼為python物件
python的dumps方法和loads方法,可實現資料的序列化和反序列化。具體來說,dumps方法,可將json格式資料序列為python的相關的資料型別;loads方法則是相反,把python資料型別轉換為json相應的資料型別格式要求。
在序列化時,中文漢字總是被轉換為unicode碼,在dumps函式中新增引數ensure_ascii=false即可解決。
下面是json的序列化和反序列化:
1、json序列化如下:
in [1]: import json
# 檢視json庫中的所有方法
in [2]: print(json.__all__)
['dump', 'dumps', 'load', 'loads', 'jsondecoder', 'jsondecodeerror', 'jsonencoder']
未在dumps函式中新增引數ensure_ascii=false,結果如下:
# coding:utf-8
import json
dict =
print('未序列化之前的資料型別為:',type(dict))
print('未序列化之前的資料:',dict)
# 對dict進行序列化處理
dict_str = json.dumps(dict) # 直接進行序列化
print('未序列化後的資料型別為:',type(dict_str))
print('未序列化後的資料:',dict_str)
執行結果是:
未序列化之前的資料型別為: 未序列化之前的資料:
未序列化後的資料型別為: 未序列化後的資料:
在dumps函式中新增引數ensure_ascii = false,結果如下:
# coding:utf-8
import json
dict =
print('未序列化之前的資料型別為:',type(dict))
print('未序列化之前的資料:',dict)
# 對dict進行序列化處理
#新增ensure_ascii=false進行序列化
dict_str = json.dumps(dict,ensure_ascii=false)
print('未序列化後的資料型別為:',type(dict_str))
print('未序列化後的資料:',dict_str)
執行結果是:
未序列化之前的資料型別為: 未序列化之前的資料:
未序列化後的資料型別為: 未序列化後的資料:
2、json反序列化如下
# coding:utf-8
import json
dict =
print('未序列化之前的資料型別為:',type(dict))
print('未序列化之前的資料:',dict)
# 對dict進行序列化處理
#新增ensure_ascii=false進行序列化
dict_str = json.dumps(dict,ensure_ascii=false)
print('未序列化後的資料型別為:',type(dict_str))
print('未序列化後的資料:',dict_str)
# 在對dict_str進行反序列化處理
dict_str_dict = json.loads(dict_str)
print('反序列化後的資料型別為:', type(dict_str_dict))
print('反序列化後的資料為: ', dict_str_dict)
執行結果:
未序列化之前的資料型別為: 未序列化之前的資料:
未序列化後的資料型別為: 未序列化後的資料:
反序列化後的資料型別為: 反序列化後的資料為:
在實際的工作中,序列化或者反序列化的可能是乙個檔案的形式,不可能像如上寫的那樣簡單的,下來就來實現這部分,把檔案內容進行序列化和反序列化,先來看序列化的**,兩步操作:
1、先序列化 列表物件 ;
2、步把序列化成的字串寫入檔案:
# coding:utf-8
import json
# 把list先序列化,寫入到乙個檔案中
# 兩步操作 1步先序列化 列表物件
# 2步把序列化成的字串寫入檔案
json.dump(list,open('hello.txt','w'))
r1 = open('hello.txt','r')
print(r1.read())
反序列化:1、先讀取檔案的字串物件;2、然後反序列化成列表物件:
# coding:utf-8
import json
# 把list先序列化,寫入到乙個檔案中
# 兩步操作 1步先序列化 列表物件
# 2步把序列化成的字串寫入檔案
json.dump(list,open('hello.txt','w'))
r1 = open('hello.txt','r')
print(r1.read())
print(type(r1.read()))
#兩步操作:1、先讀取檔案的字串物件;
# 2、然後反序列化成列表物件
res = json.load(open('hello.txt','r'))
print(res)
print('資料型別:',type(res))
Python JSON序列化與反序列化
python 廖雪峰python教程學習筆記 在程式的執行過程中,所有的變數都是在記憶體中,變數在記憶體中來得快也去得快,所以我們需要將記憶體中的變數轉化為可儲存的物件或者可傳輸的物件,這樣的過程就叫做序列化。python中提供了pickle模組來實現物件的序列化與反序列化,pickle.dumps...
Python json和pickle序列化
1.序列化 把記憶體的一些資料物件存到硬碟。資料物件是一些基本資料型別,如list dict,set等。2.反序列化 將硬碟的內容載入成原來的資料物件。3.為什麼要用序列化與反序列化 當你想把乙個資料暫時儲存起來而過會又要用的時候,就可以把它先儲存到硬碟,保證安全性。需要時在取出來。4.json序列...
序列化與發序列化
1.序列化與反序列化都用的是相同的 binaryformatter bf new binaryformatter 2.使用 流 的方式 filestream fs new filestream 序列化內容路徑 一般為本地bin debug檔案中 類名.bin filemode.openorcreat...