【參考資料】
https://blog.csdn.net/zhouzhiwengang/article/details/72357608
- 序列化(Serialization):將對象的狀態(tài)信息轉換為可以存儲或可以通過網(wǎng)絡傳輸?shù)倪^程弥虐,傳輸?shù)母袷娇梢允荍SON揩环,XML等忧设。
- 反序列化:就是從存儲區(qū)域(JSON疑苔,XML)讀取反序列化對象的狀態(tài)握童,重新創(chuàng)建該對象醇王。
python從2.6版本開始加入了JSON模塊颈渊,python的json模塊的序列化與反序列化的過程分別是encoding和decoding慎式。
- encoding:把一個python對象編碼轉換成Json字符串。
- decoding:把json格式字符串編碼轉換成python對象澈蟆。
json提供四個功能:dumps
, dump
, loads
, load
- dumps功能 :將數(shù)據(jù)通過特殊的形式轉換為所有程序語言都認識的字符串
>>> import json
>>> data = ['aa', 'bb', 'cc']
>>> json_data = json.dumps(data)
>>> json_data
'["aa", "bb", "cc"]'
- loads功能 : 將json編碼的字符串再轉換為python的數(shù)據(jù)結構
>>> mes = json.loads(json_data)
>>> mes
['aa', 'bb', 'cc']
- dump功能:將數(shù)據(jù)通過特殊的形式轉換為所有程序語言都認識的字符串墨辛,并寫入文件
with open('地址.json', 'w') as f:
json.dump(data, f)
- load功能:數(shù)據(jù)文件中讀取數(shù)據(jù),并將json編碼的字符串轉換為python的數(shù)據(jù)結構
with open('地址.json', 'r') as f:
mes = json.load(f)
json編碼支持的基本類型有:None
, bool
, int
, float
, string
, list
, tuple
, dict
.
對于字典,json會假設key
是字符串(字典中的任何非字符串key都會在編碼時轉換為字符串)趴俘,要符合JSON規(guī)范睹簇,應該只對python列表和字典進行編碼奏赘。此外,在WEB應用中太惠,把最頂層對象定義為字典是一種標準做法磨淌。
json編碼的格式幾乎和python語法一致,略有不同的是:True會被映射為true,False會被映射為false,None會被映射為null凿渊,元組()會被映射為列表[]梁只,因為其他語言沒有元組的概念,只有數(shù)組嗽元,也就是列表敛纲。
['aa', 'bb', 'cc']
>>> import json
>>> data = {'a':True, 'b':False, 'c':None, 'd':(1, 2), 1:'abc'}
>>> json_data = json.dumps(data)
>>> json_data
'{"a": true, "b": false, "c": null, "d": [1, 2], "1": "abc"}'