Python-JSON和pickle

筆記:
一:簡介
(1)JSON (JavaScript Object Notation) 是一種輕量級(XML重量級)的數據交換格式。
是爲了數據交換而定製的一種規則,它基於ECMAScript的一個子集。

(2)JSON是一種數據格式!
字符串是JSON的表現形式。(符合JSON格式的字符串叫作JSON字符串)

(3)Python3中能夠使用 json 模塊來對 JSON 數據進行編解碼,它包含了兩個函數:
json.dumps(): 對數據進行編碼。
json.loads(): 對數據進行解碼。
(4)JSON的優勢是:易閱讀、易解析、網絡傳輸效率高、跨語言交換數據

二:python 編碼爲JSON類型轉換對應表:
_______________________________________________
| python | JSON |
-------------------------------------------------
| dict | object |
-------------------------------------------------
| list,tuple | array |
-------------------------------------------------
| str | string |
-------------------------------------------------
| int,float,Enums | number |
-------------------------------------------------
| True,False,None | true,false,null |
-------------------------------------------------

三: 若是你要處理的是文件而不是字符串,能夠使用
json.dump()
json.load()

四:用pickle對數據序列化和反序列化
(1)方法:
pickle.dump()
pickle.load()
pickle.dumps()
pickle.loads()
(2)數據類型:
全部python支持的原生類型:布爾值,整數,浮點數,複數,字符串,字節,None。
由任何原生類型組成的列表,元組,字典和集合。
函數,類,類的實例

五:JSON和pickle之間的區別
JSON序列化和反序列化的目的是將Python數據類型轉換爲JSON標準類型,
或者將JSON類型的數據轉換爲python的數據類型,從而實現不一樣語言之間的數據交換!
pickle:在程序運行過程當中但願保存一個數據,重用或者發送給其餘人,能夠採用這方式
將數據寫入文件,支持全部數據類型!
code:
 1 import json
 2 import pickle
 3 # ----------------------------------------------#
 4 # 反序列化
 5 # ----------------------------------------------#
 6 # object
 7 json_str = '{"name":"qiyue", "age":18}'     # JSON字符串
 8 student = json.loads(json_str)    # JSON對象轉換爲字典
 9 print(student)
10 print(json_str)
11 print(type(student))
12 
13 # object
14 json_str1 = '[{"name":"qiyue", "age":18, "flag":false}, ' \
15             '{"name":"qiyue", "age":18}]'     # JSON字符串
16 student1 = json.loads(json_str1)    # JSON對象轉換爲字典
17 print(type(student1), student1)
18 print(student1[0])
19 
20 # ----------------------------------------------#
21 # 序列化
22 # ----------------------------------------------#
23 student2 = [
24                 {"name": "qiyue", "age": 18, "flag": False},
25                 {"name": "qiyue", "age": 18}
26            ]
27 
28 json_str1 = json.dumps(student2)    # 轉換爲字符串後能夠利用正則表達式處理字符串
29 print(type(json_str1), json_str1)
30 
31 # ----------------------------------------------#
32 # 處理的是文件
33 # ----------------------------------------------#
34 # 將數據寫入文件
35 student3 = [
36                 {"name": "qiyue", "age": 18, "flag": False},
37                 {"name": "qiyue", "age": 18}
38            ]
39 with open('data.json', 'w') as f:
40     json.dump(student3, f)
41 
42 # 讀取數據
43 with open('data.json', 'r') as f:
44     data = json.load(f)
45 
46 
47 # dumps(object)將對象序列化
48 list_a = ["English", "Math", "Chinese"]
49 list_b = pickle.dumps(list_a)   # 序列化數據
50 print(list_a)
51 print(list_b)
52 
53 # loads(object)將對象原樣恢復,而且對象類型也恢復原來的格式
54 list_c = pickle.loads(list_b)
55 print(list_c)
56 
57 
58 # dumps(object,file)將對象序列化後存儲到文件中
59 group1 = ("baidu", "wen", "qingtian")
60 f1 = open('group.txt', 'wb')
61 pickle.dump(group1, f1, True)
62 f1.close()
63 
64 # load(object, file)將文件中的信息恢復
65 f2 = open('group.txt', 'rb')
66 t = pickle.load(f2)
67 f2.close()
68 print(t)
相關文章
相關標籤/搜索