标签:class none python sha 其他 好处 import 内容 创建
作用:用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,就产生了一种多种语言通用的数据类型,json串。
序列化:把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening。
序列化的优点:
json数据类型和python数据类型对应关系表
Json类型 | Python类型 |
---|---|
{} | dict |
[] | list |
"string" | str |
520.13 | int或float |
true/false | True/False |
null | None |
json模块序列化和反序列化的一个过程如下图所示
import json
# 序列化: 从python的字典(最常用)变成json串,dump
# 反序列化:从json串变成python的字典(最常用), load
dic = {'name': 'randysun', 'age': 18}
# 序列化到内存中
data = json.dumps(dic)
print(data, type(data))
# 反序列化
# 注意:无论数据是怎样创建的,只要满足json格式(如果是字典,则字典内元素都是双引号),就可以json.loads出来,不一定非要dumps的数据才能loads
data = json.loads(data)
print(data, type(data))
结果:
{"name": "randysun", "age": 18} <class ‘str‘>
{‘name‘: ‘randysun‘, ‘age‘: 18} <class ‘dict‘>
文件序列化
# 对文件内容进行序列化
with open('test.json', 'w', encoding='utf8') as fw:
json.dump(dic, fw)
with open('test.json', 'r', encoding='utf8') as fr:
data = json.load(fr)
print(data)
结果:
{‘name‘: ‘randysun‘, ‘age‘: 18}
Pickle序列化和所有其他编程语言特有的序列化问题一样,它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,即不能成功地反序列化也没关系。但是pickle的好处是可以存储Python中的所有的数据类型,包括对象,而json不可以。
dic = {'name': 'randysun', 'age': 18}
def func():
x = 3
print(x)
with open('test.pkl', 'wb') as fw:
pickle.dump(func, fw)
with open('test.pkl', 'rb') as fr:
data = pickle.load(fr)
print(data)
data()
结果:
<function func at 0x000001906940C268>
3
标签:class none python sha 其他 好处 import 内容 创建
原文地址:https://www.cnblogs.com/dadazunzhe/p/11404004.html