我看到过关于 JSON 的 "deserialize" 和 "serialize" 这两个术语。它们是什么意思呢?
我看到过关于 JSON 的 "deserialize" 和 "serialize" 这两个术语。它们是什么意思呢?
JSON是一种将对象编码为字符串的格式。 序列化 是指将一个对象转换成该字符串,而反序列化则是它的逆操作(将字符串转换为对象)。
在传输数据或将数据存储到文件中时,数据需要以字节字符串的形式呈现,但复杂对象很少采用这种格式。序列化可以将这些复杂对象转换为字节字符串以供使用。在传输完字节字符串后,接收方必须从字节字符串中恢复原始对象。这称为反序列化。
假设你有一个对象:
{foo: [1, 4, 7, 10], bar: "baz"}
将对象序列化为 JSON 将把它转换为字符串:
'{"foo":[1,4,7,10],"bar":"baz"}'
该字符串可以被存储或发送到任何地方。接收者可以反序列化此字符串以获取原始对象。{foo: [1, 4, 7, 10], bar: "baz"}
。
"{foo: [1, 4, 7, 10], bar: "baz"}"
? - panoet在数据存储的背景下,序列化是将数据结构或对象状态转换为可存储(例如在文件或内存缓冲区中)或传输(例如跨网络连接链路)的格式,并在以后重建的过程。[...]
相反的操作,从一系列字节中提取数据结构,就是反序列化。
JSON(JavaScript Object Notation)是一种开放的标准文件格式和数据交换格式,使用人类可读的文本来存储和传输由属性-值对和数组(或其他可序列化值)组成的数据对象。它是一种通用的数据格式,在电子数据交换中有各种用途,包括与服务器配合使用的Web应用程序。
JSON是一种与语言无关的数据格式。它源自JavaScript,但许多现代编程语言都包含生成和解析JSON格式数据的代码。JSON文件使用扩展名.json。
在Python中,序列化仅仅是将给定的数据结构转换为其有效的JSON形式(例如,Python的True
将被转换为JSON的true
,字典本身将被转换为字符串),反之亦然。
Python内置模块json
是进行序列化和反序列化的标准方法:
import json
data = {
'president': {
"name": """Mr. Presidente""",
"male": True,
'age': 60,
'wife': None,
'cars': ('BMW', "Audi")
}
}
# serialize
json_data = json.dumps(data, indent=2)
print(json_data)
# {
# "president": {
# "name": "Mr. Presidente",
# "male": true,
# "age": 60,
# "wife": null,
# "cars": [
# "BMW",
# "Audi"
# ]
# }
# }
# deserialize
restored_data = json.loads(json_data) # deserialize
print(type(json_data))
,它会显示str
。所以字典对象被转换成了字符串。 - undefined分享我对这个主题的学习心得。
什么是序列化
序列化
是将数据对象转换为字节流
的过程。
什么是字节流
字节流
只是一串二进制数据流。因为只有二进制数据才能被存储或传输。
字节字符串与字节流的区别
有时你会看到人们也使用字节字符串
这个词。字节的字符串编码称为字节字符串
。然后它可以解释下面的JSON是什么。
JSON和序列化之间的关系是什么
JSON
是表示字节数据的字符串格式。JSON以UTF-8编码。因此,虽然我们看到的是可读的字符串,但在幕后,字符串以UTF-8中的字节编码。
Python中序列化和反序列化的解释
在Python中,使用pickle模块进行序列化。因此,在Python中,序列化过程称为pickling。该模块可在Python标准库中使用。
使用pickle进行序列化
import pickle
#the object to serialize
example_dic={1:"6",2:"2",3:"f"}
#where the bytes after serializing end up at, wb stands for write byte
pickle_out=open("dict.pickle","wb")
#Time to dump
pickle.dump(example_dic,pickle_out)
#whatever you open, you must close
pickle_out.close()
“PICKLE” 文件(可用记事本等文本编辑器打开)包含序列化数据:
€}q (KX 6qKX 2qKX fqu.
使用 pickle 进行反序列化
import pickle
pickle_in=open("dict.pickle","rb")
get_deserialized_data_back=pickle.load(pickle_in)
print(get_deserialized_data_back)
输出:
{1: '6', 2: '2', 3: 'f'}