json模块

json是一个序列化模块,主要用于跨语言传输数据,包含了两个关键函数

  • json.dumps(): 将python数据类型转换成json格式字符串
  • json.loads(): 将json格式字符串转换成对应的数据类型

官方文档:https://docs.python.org/zh-cn/3/library/json.html

json模块 - 图1

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)

  1. import json
  2. d = {'username': 'kevin', 'pwd': 123}
  3. print(d, type(d))
  4. # {'username': 'kevin', 'pwd': 123} <class 'dict'>
  5. res = json.dumps(d)
  6. print(res, type(res))
  7. # {"username": "kevin", "pwd": 123} <class 'str'>
  8. '''双引号是json格式数据独有的标志符号'''
  9. res = '{"username":"kevin","pwd":123}'
  10. print(res)
  11. # {"username":"jason","pwd":123} 也算json格式

json转换python(loads)

  1. res = json.loads(res)
  2. print(res, type(res))
  3. # {'username': 'kevin', 'pwd': 123} <class 'dict'>

python转换json写入文件(dump)

  1. import json
  2. d = {'username': 'kevin', 'pwd': 123}
  3. with open(r'info.json', 'w', encoding='utf8') as f:
  4. json.dump(d, f)

json模块 - 图2

读取json文件转换python(load)

  1. with open(r'info.json', 'r', encoding='utf8') as f:
  2. res = json.load(f)
  3. print(res, type(res))
  4. # {'username': 'kevin', 'pwd': 123} <class 'dict'>

针对需要存取中文数据处理

使用前

  1. import json
  2. d = {"国籍": "中国"}
  3. with open(r'info.json', 'w', encoding='utf8') as f:
  4. json.dump(d, f)

json模块 - 图3

使用后

  1. # ensure_ascii 关键字参数
  2. import json
  3. d = {"国籍": "中国"}
  4. with open(r'info.json', 'w', encoding='utf8') as f:
  5. json.dump(d, f,ensure_ascii=False)

json模块 - 图4

pickle模块(了解)

pickle模块是Python专用的持久化模块,可以持久化包括自定义类在内的各种数据。但是持久化后的字串是不可认读的,并且只能用于Python环境,不能用作与其它语言进行数据交换。

使用

  1. import pickle
  2. class MyClass(object):
  3. school = 'school'
  4. def __init__(self, name):
  5. self.name = name
  6. def choose_course(self):
  7. print("%s正在选课" % self.name)
  8. obj = MyClass('kevin')
  9. print(obj.school)
  10. obj.choose_course()
  11. with open(r'%s' % obj.name, 'wb') as f:
  12. pickle.dump(obj, f)
  13. with open(r'kevin', 'rb') as f:
  14. data = pickle.load(f)
  15. print(data)
  16. print(data.name)
  17. print(data.school)