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)
身体和灵魂必须有一个在路上!