Python-序列化

序列化

json(各种语言都拥有)

json是各种语言共有的,是各种语言用来交互的

dumps   loads -- 用于网络传输

dump   load -- 用于文件存储

将数据类型转换成字符串(序列化),将字符串转成原数据类型(反序列)

能够序列:字典,列表,元组序列后变成列表

import json
dic = {"key":1}
s = json.dumps(dic)
print(s,type(s))  
# {"key": 1} <class 'str'>
d = json.loads(s)
print(d,type(d))
# {'key': 1} <class 'dict'>
import json
dic = {"key":1}
# 将原数据类型转换成字符串类型,写到文件中
json.dump(dic,open("a","a",encoding="utf-8"))
# 将文件中字符串转换成原数据类型
print(json.load(open("a","r",encoding="utf-8"))["key"])
import json
dic = {"key":'爱人'}
f = open("a","a",encoding="utf-8")
f.write(json.dumps(dic,ensur_ascii=False)+"\n")
f.write(json.dumps(dic)+"\n")
f.write(json.dumps(dic)+"\n")
f.write(json.dumps(dic)+"\n")
f.write(json.dumps(dic)+"\n")

f1 = open("a","r",encoding="utf-8")
for i in f1:
 print(json.loads(i),type(json.loads(i)))
# {'key': '爱人'} <class 'dict'>
# {'key': '爱人'} <class 'dict'>
# {'key': '爱人'} <class 'dict'>
# {'key': '爱人'} <class 'dict'>
# {'key': '爱人'} <class 'dict'>
import json
dic = {"meet":27,"太白":30,"alex":36,"wusir":33}
print(json.dumps(dic))
# {"meet": 27, "\u592a\u767d": 30, "alex": 36, "wusir": 33}
print(json.dumps(dic,ensuer_ascii=False))
# {"meet": 27, "太白": 30, "alex": 36, "wusir": 33}
print(json.dumps(dic,ensure=False,sort_keys=True))
# {"alex": 36, "meet": 27, "wusir": 33, "太白": 30}

pickle(只有python有)

只有python有,几乎可以序列python中所有数据类型,匿名函数不能序列

存在文件中为类似字节,只能用ab和rb模式

import pickle
def func():
   print(1)
a = pickle.dumps(func)
print(pickle.loads())
# 最后结果为1

 

posted on 2020-03-04 16:04  we我们  阅读(179)  评论(0)    收藏  举报