序列化相關
如果我們要在不同的編程語言之間傳遞對象机久,就必須把對象序列化為標準格式,比如XML浊闪,但更好的方法是序列化為JSON
1.json
- 應用場景:
json模塊主要用于處理json格式的數(shù)據(jù)刽沾,可以將python的字典或列表等對象轉化為json(序列化)格式的數(shù)據(jù)读处,同時也可以將json格式的數(shù)據(jù)轉化為python的字典(反序列化)尘分,便于python處理猜惋,便于跨平臺或跨語言進行數(shù)據(jù)交互 - 功能:
- Json模塊提供了四個功能:dumps、dump培愁、loads著摔、load
- 具體應用:
- dumps:將python 基本數(shù)據(jù)類型轉化為json格式數(shù)據(jù)類型
- loads:將json格式數(shù)據(jù)類型轉化為python數(shù)據(jù)類型
# author:PicaHealth
# contact: 172212595@qq.com
# datetime:2019/3/26 21:47
# software: PyCharm
"""
文件說明:json_test 序列化、反序列化
"""
import json
s1 = {'key1': 'value1'} # 這是一個字典
print(type(s1))
# 輸出結果: <class 'dict'>
# Python對象序列化為json
json_str = json.dumps(s1)
print("json_str類型:%s"%type(json_str))
print("json_str內容:%s"%json_str)
# 輸出結果:
# json1_str類型:<class 'str'> #經dumps方法處理之后返回的是一個str定续,內容就是標準的JSON
# json1_str內容:{"key1": "value1"}
# 把JSON反序列化為Python對象
json_obj=json.loads(json_str)
print("json_obj類型:%s"%type(json_obj))
print("json_obj內容:%s"%json_obj)
# 輸出結果:
# json_obj類型:<class 'dict'> #經loads處理之后谍咆,str變味dict
# json_obj內容:{'key1': 'value1'}
- dump 和load 用于對文件進行序列化和反序列化
import json
s1 = {"key1": "value1"} # 這是一個字典
print(type(s1))
# 輸出結果: <class 'dict'>
json.dump(s1,open('序列化.txt','w')) #將s1序列化為json,并寫入文件
e1 = json.load(open('序列化.txt','r')) #讀取json文件私股,并反序列化為Python字典
print("e1的類型:",type(e1))
print('e1的內容:',e1)
# 輸出結果:
# e1的類型: <class 'dict'>
# e1的內容: {'key2': 'value2'}
2.pickle
- 應用場景:
pickle模塊也有基本的數(shù)據(jù)序列和反序列化摹察,和json的功能類似。和json不同的是:json 更適合跨語言 可以處理字符串倡鲸,基本數(shù)據(jù)類型供嚎;pickle屬于python專有,更適合處理復雜類型的序列化- 由于pickle屬于Python特有,而且方法與json模塊基本一致峭状,這里就不做概述克滴,詳情可以參考結尾的文章
小結:
Python語言特定的序列化模塊是pickle,但如果要把序列化搞得更通用优床、更符合Web標準劝赔,就可以使用json模塊。
參考文章: