json模块
json是一个序列化模块,主要用于跨语言传输数据,包含了两个关键函数
- json.dumps(): 将python数据类型转换成json格式字符串
- json.loads(): 将json格式字符串转换成对应的数据类型
官方文档:https://docs.python.org/zh-cn/3/library/json.html

Python 编码为 JSON 类型转换对应表
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str | string |
| int, float, int- & float-derived Enums | number |
| True | true |
| False | false |
| None | null |
JSON 解码为 Python 类型转换对应表
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | str |
| number (int) | int |
| number (real) | float |
| true | True |
| false | False |
| null | None |
python转换json (dumps)
import jsond = {'username': 'kevin', 'pwd': 123}print(d, type(d))# {'username': 'kevin', 'pwd': 123} <class 'dict'>res = json.dumps(d)print(res, type(res))# {"username": "kevin", "pwd": 123} <class 'str'>'''双引号是json格式数据独有的标志符号'''res = '{"username":"kevin","pwd":123}'print(res)# {"username":"jason","pwd":123} 也算json格式
json转换python(loads)
res = json.loads(res)print(res, type(res))# {'username': 'kevin', 'pwd': 123} <class 'dict'>
python转换json写入文件(dump)
import jsond = {'username': 'kevin', 'pwd': 123}with open(r'info.json', 'w', encoding='utf8') as f:json.dump(d, f)

读取json文件转换python(load)
with open(r'info.json', 'r', encoding='utf8') as f:res = json.load(f)print(res, type(res))# {'username': 'kevin', 'pwd': 123} <class 'dict'>
针对需要存取中文数据处理
使用前
import jsond = {"国籍": "中国"}with open(r'info.json', 'w', encoding='utf8') as f:json.dump(d, f)

使用后
# ensure_ascii 关键字参数import jsond = {"国籍": "中国"}with open(r'info.json', 'w', encoding='utf8') as f:json.dump(d, f,ensure_ascii=False)

pickle模块(了解)
pickle模块是Python专用的持久化模块,可以持久化包括自定义类在内的各种数据。但是持久化后的字串是不可认读的,并且只能用于Python环境,不能用作与其它语言进行数据交换。
使用
import pickleclass MyClass(object):school = 'school'def __init__(self, name):self.name = namedef choose_course(self):print("%s正在选课" % self.name)obj = MyClass('kevin')print(obj.school)obj.choose_course()with open(r'%s' % obj.name, 'wb') as f:pickle.dump(obj, f)with open(r'kevin', 'rb') as f:data = pickle.load(f)print(data)print(data.name)print(data.school)
