1. JSON:一種輕量級的資料交換格式,一般介面返回的資料型別都是JSON。
JSON的定義格式與字典相同,也是鍵值對方式,如{key:value}。其實 JSON 是字串,由於字串不能用 key、value 來取值,所以要先轉換為字典才可以。
2. JSON 模組常用的四個方法:
(1)json.dumps():將 Python 任意物件轉換成 string 物件
def json_dumps_demo():
test_list = [1, 2, 3]
print(type(json.dumps(test_list))) # 列印結果為:str
test_dict = {"name": "test", "age": 10}
print(type(json.dumps(test_dict))) # 列印結果為:str
test_int = 99
print(type(json.dumps(test_int))) # 列印結果為:str
(2)json.loads():將 string 物件轉換成 python 物件
def json_loads_demo():
string_list = "[1, 2, 3]"
print(type(json.loads(string_list))) # 列印結果為:list
string_dict = '{"name": "test", "age": 10}'
print(type(json.loads(string_dict))) # 列印結果為:dict
string_int = "99"
print(type(json.loads(string_int))) # 列印結果為:int
(3)json.dump():序列化,將Python物件序列化成JSON格式並寫入檔案
def json_dump_demo():
test_dict = {"name": "test", "age": 10}
with open("json_test.json", "w") as fp:
json.dump(test_dict, fp, indent="\t", ensure_ascii=False)
(4)json.load():反序列化,從JSON檔案中讀取資料並將其反序列化為Python物件
def json_load_demo():
with open("json_test.json", "r") as fp:
data = json.load(fp)
print(type(data)) # 列印結果為:dict
總結:
序列化和反序列化:資料轉換的兩個互逆過程,用於在不同呢環境中傳遞和儲存資料
序列化:將物件的狀態資訊轉換為可儲存或傳輸的格式,例如位元組流、JSON字串或XML文件;目的:將複雜的資料結構轉換成已儲存、傳輸和共享的格式
反序列化:將序列化後的資料轉換回原始的物件或資料結構;目的:重建物件的狀態,以便程式能夠使用它
類比:
序列化(dump):將樂高模型(高階資料型別)拆解成各個零件(字串)
反序列化(load):將各個零件(字串)組裝成樂高模型(高階資料型別)
json.dump()、json.dumps():序列化,將Python物件轉換成JSON字串
json.load()、json.loads():反序列化,將JSON字串轉換成Python物件
* 帶 s 的都是和字串相關,不帶 s 的和檔案相關