day28

一、序列化与反序列化的介绍

什么是序列化?什么是反序列化

序列:字符串

序列化:将其他数据类型转化为字符串的过程

反序列化:将字符串转为其他数据类型的过程

序列化指的是把内存的数据类型转换成一个特定格式的内容,该格式内容可用于存储或者传输给其他平台使用

内存中的数据类型------>序列化-------->特定的格式(json格式或者pickle格式)

为何要序列化

写文件必须是字符串或者二进制

基于网络传输的数据必须是二进制

序列化得到的结果==》特定的格式的内容有两种用途

1、可用于存储==》用于存档(把内存的数据类型转化为一种特定的格式类型,将其保存到硬盘文件里去,该文件日后的用途是就自己的软件来读,读出来文件,再反序列化,在自己的软件上运行)

2、传输给其他平台使用==》跨品台数据交互 (把内存的数据类型转化为一种特定的格式类型,将其保存到硬盘文件里去,该文件日后的用途是将其丢给其他平台上使用)

Python            java

列表    特定的格式    数组

 

强调:

    针对用途1的特定格式:可是一种专用的格式==》pickle(只有Python可以识别)

    针对用途2的特定格式:用该是一种通用,能够被所有语言识别的格式==》json

 

3、如何序列化与反序列化

 1 # 将序列化的数据写入test.json里去(复杂方法)
 2 import json
 3 json_res = json.dumps([1,'aaa',True,False])
 4 print(json_res, type(json_res))       # [1, "aaa", true, false] <class 'str'>
 5 with open('test.json',mode='wt', encoding='utf-8') as f:
 6     f.write(json_res)
 7 
 8 # 将序列化的数据写入test.json里去(简单方法)
 9 
10 import json
11 with open('test.json',mode='wt', encoding='utf-8') as f:
12     json.dump([1,'aaa',True,False],f)
13 
14 # 将test.json文件中的数据反序列化(复杂方法)
15 import json
16 with open('test.json', mode='rt', encoding='utf-8') as f:
17     json_res = f.read()
18     l = json.loads(json_res)
19     print(l, type(l))           # [1, 'aaa', True, False] <class 'list'>
20 
21 # 将test.json文件中的数据反序列化(复杂方法)
22 import json
23 with open('test.json', mode='rt', encoding='utf-8') as f:
24     l = json.load(f)
25     print(l,type(l))

4.json格式的补充

json验证:json格式兼容的是所有语言通用的数据类型,不能识别某一语言独有的类型(Python中的集合)

json强调:一定要搞清楚json格式,不要与Python混淆(json格式中没有单引号一说)

json:        Python

{}           dict

[]            list

"string"           str 

1234.56        int/float

true/false       True/False

null          None

 

了解:

json.loads反解内容前加b能将文件中的bytes类型反解出来  

1 import json
2 # l = json.loads(b'[1,"aaa",true,false]')
3 # print(l,type(l))
4 
5 res = json.dumps({'name':'郁子奇'})
6 print(res,type(res))        # {"name": "\u90c1\u5b50\u5947"} <class 'str'>
7 
8 res = json.loads(b'{"name": "\u90c1\u5b50\u5947"}')
9 print(res, type(res))       #{'name': '郁子奇'} <class 'dict'>

5、pickle 模块

json模块:支持的数据类型较少,字典,列表,元组=》列表,整形,字符串,布尔值

pickle模块:支持所有的数据类型,只能在Python中用

posted @ 2021-07-07 21:08  Gnomeshghy  阅读(63)  评论(0)    收藏  举报