序列化

发布时间 2023-12-02 22:23:49作者: 我才是最帅的那个男人

一,序列化

  主要分为通过函数进行序列化与反序列化达到传输数据的效果。根据情况可分为两种。

  第一种,python与不同语言间进行交流,比如,后端语言,java c c++ c#等,因为需要使用都可以识别的数据类型进行传输,所有便诞生了Json模块。Json模块主要分为四个功能,dumps、dump、loads、load。

  

 1 #该方法是通过控制内存地址进行序列化与反序列化的。
 2 import json
 3 dic = {'k1':'v1','k2':'v2','k3':'v3'}
 4 str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
 5 print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
 6 #注意,json转换完的字符串类型的字典中的字符串是由""表示的
 7 
 8 dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
 9 #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
10 print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
11 
12 
13 list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
14 str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型 
15 print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]
16 list_dic2 = json.loads(str_dic)
17 print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]
18 loads和dumps
dumps与loads
 1 #该方法是通过控制内存地址进行序列化与反序列化的。
 2 import json
 3 dic = {'k1':'v1','k2':'v2','k3':'v3'}
 4 str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
 5 print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
 6 #注意,json转换完的字符串类型的字典中的字符串是由""表示的
 7 
 8 dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
 9 #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
10 print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
11 
12 
13 list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
14 str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型 
15 print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]
16 list_dic2 = json.loads(str_dic)
17 print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]
18 loads和dumps
dumps与loads