序列化模組1 json

2022-07-29 16:42:15 字數 3679 閱讀 9490

字典 / 列表 / 數字 /物件 -序列化->字串

為什麼要序列化

# 1.要把內容寫入檔案 序列化

# 2.網路傳輸資料 序列化

字串-反序列化->字典 / 列表 / 數字 /物件

序列化模組 json pickle shelve

import json

# json格式的限制1,json格式的key必須是字串資料型別

# json格式中的字串只能是""

# 寫入中文需要加引數 ensu_ascii = false

# 如果是數字為key,那麼dumps之後會強行轉成字串""資料型別,loads回來會變成字串key

# 對元組做value的字典會把元組強制轉換成列表

#  json不支援元組做key, key只能是字串型別

# 可以多次dump但是不能load出來

# 想dump多個資料進入檔案,用dumps  先把每個型別都轉序列化 再用 write 寫入

# json的其他引數,是為了使用者看的更方便,但是會相對浪費儲存空間

# 只提供四個方法 dumps loads dump load

# 字串轉換 (dumps loads)

dic = 

str_dic = json.dumps(dic) #序列化:將乙個字典轉換成乙個字串

print(dic)

print(str_dic,type(str_dic)) # #注意,json轉換完的字串型別的字典中的字串是由""表示的

with open('json_dump','w') as f:

f.write(str_dic)

ret = json.loads(str_dic) #反序列化:將乙個字串格式的字典轉換成乙個字典

#注意,要用json的loads功能處理的字串型別的字典中的字串必須由""表示

print(ret,type(ret))

print(ret['aaa'])

# 檔案寫入讀取(dump load)

dic = 

with open('json_dump2','w') as f:

json.dump(dic,f) #dump方法接收乙個檔案控制代碼,直接將字典轉換成json字串寫入檔案

with open('json_dump2') as f:

print(type(json.load(f))) #load方法接收乙個檔案控制代碼,直接將檔案中的json字串轉換成資料結構返回

# ensure_ascii關鍵字引數

import json

f = open('file','w')

# 不加引數會寫入unicode格式

# json.dump(,f)

# ret = json.dumps()

# f.write(ret+'\n')

json.dump(,f,ensure_ascii=false)

ret = json.dumps(,ensure_ascii=false)

f.write(ret+'\n')

f.close()

# 如果是數字為key,那麼dumps之後會強行轉成字串""資料型別,loads回來會變成字串key

dic = 

str_dic = json.dumps(dic)

print(str_dic) #

new_dic = json.loads(str_dic)

print(new_dic) #

# 對元組做value的字典會把元組強制轉換成列表

dic = 

str_dic = json.dumps(dic)

print(str_dic) # 元祖變成列表

new_dic = json.loads(str_dic) #反序列化 還是列表

print(new_dic) #

# 對列表的dump

lis = [1,2,3,4,5,'a','b','c','111','0']

str_lis = json.dumps(lis)

print(str_lis)

lis2 = [1,2,3,4,5,'a','b','c','111','0']

with open('json_demo','w') as f1:

json.dump(lis2,f1) # 寫入字串 [1, 2, 3, 4, 5, "a", "b", "c", "111", "0"]

with open('json_demo','r') as f2:

ret = json.load(f2) # 讀取 反序列化

print(ret) # 1, 2, 3, 4, 5, 'a', 'b', 'c', '111', '0']

# 可以多次dump但是不能load出來

s = '張三'

li = ['a','b','c',1,2,3,(1,2,3),,]

dic =

# 可以多次dump資料到檔案裡

with open('json_demo','w') as f1:

json.dump(s,f1,ensure_ascii=false)

f1.write('\n')

json.dump(li,f1,ensure_ascii=false)

f1.write('\n')

json.dump(dic,f1)

# 想dump多個資料進入檔案,用dumps  先把每個型別都轉序列化 再用 write 寫入

s = '李四'

li = ['王五']

dic =

with open('json_demo','w') as f1:

str_s = json.dumps(s,ensure_ascii=false)

str_li = json.dumps(li,ensure_ascii=false)

str_dic = json.dumps(dic,ensure_ascii=false)

f1.write(str_s+'\n')

f1.write(str_li+'\n')

f1.write(str_dic+'\n')

with open('json_demo','r') as f2:

for line in f2:

ret = json.loads(line)

print(ret)

# json的其他引數,是為了使用者看的更方便,但是會相對浪費儲存空間

data = 

j_data = json.dumps(data,sort_keys=true,indent=4,separators=(',',':'),ensure_ascii=false)

print(j_data)

#

序列化模組 json

1.什麼是序列化 將原本的字典,列表等內容轉換成乙個字串的過程就叫做序列化 2.序列化的目的 1.以某種儲存形式使自定義物件持久化 2.將物件從乙個地方傳遞到另乙個地方 3.使程式更具維護性 json json模組提供了四個功能 dumps loads dump load json提供四個功能dum...

json模組中 序列化與反序列化

記憶體中資料型別 序列化 特定的格式 json格式或者pickle格式 互相轉換方法1.res eval print res print type res res str print res print type res 序列化指的是把記憶體的資料型別轉換成乙個特定的格式的內容 該格式的內容 1 可...

json序列化 反序列化

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