概念

序列化:将文件从内存持久化保存到硬盘的过程

反序列化: 将数据从硬盘加载到内存的过程

序列化的两种方法
dumps: 将数据转换成为JSON字符串,不会将数据保存带文件里
dump: 将数据转换成为JSON字符串的同时写入到指定文件

反序列化的两种方法

loads: 将JSON字符串加载成为python里的数据
load: 读取文件,把读取的内容加载成为python里的数据

产生背景

内存中的数据经转化持久存储,或者通过网络发送给其他终端

文件操作的不足

write时,只能写入字符串或者二进制(需要转换), 字典,列表,列表都不能直接写进去
补充: repr & str将对象转换为字符串
将数据转换为二进制则需要使用pickle模块

代码实现

  1. import json
  2. names = ['zhangsan', 'lisi', 'wangmazi']
  3. x = json.dumps(names) # dumps的作用是将数据转换为字符串
  4. print(x, type(x))
  5. file =open('names.txt','w', encoding='utf-8')
  6. file.write(x)
  7. file.close()
  8. names = ['zhangsan', 'Jack', 'Tom']
  9. file =open('names.txt','w', encoding='utf-8')
  10. json.dump(names, file)
  11. file.close
  12. x = '{"name":"Jack", "age":18}' # 符合JSON规则的字符串
  13. p = json.loads(x)
  14. print(p)
  15. print(p['name'])
  16. # load读取一个文件,并且文件里的json字符串加载成为一个对象
  17. file1 = open('names.txt', 'r', encoding='utf-8')
  18. y = json.load(file1)
  19. print(y)
  20. file1.close()

下续(JSON数据类型)

JSON演示.png

image.png