什么是JSON反序列化和序列化

我已经看到术语“反序列化”和“序列化”与 JSON。他们是什么意思?

我已经看到术语“反序列化”和“序列化”与 JSON。他们是什么意思?

390

JSON 是一种将对象编码为字符串的格式。Serialization表示将对象转换为该字符串反序列化是其逆操作(转换字符串-& gt;对象)

当传输数据或将其存储在文件中时,要求数据是字节字符串,但是复杂对象很少采用这种格式。序列化可以将这些复杂对象转换为字节字符串以用于这种用途。字节字符串传输后,接收器将不得不从字节字符串中恢复原始对象。这称为反序列化。

说,你有一个对象:

{foo: [1, 4, 7, 10], bar: "baz"}

序列化为 JSON 将其转换为字符串:

'{"foo":[1,4,7,10],"bar":"baz"}'

可以存储或通过线路发送到任何地方。然后,接收器可以反序列化此字符串以获取原始对象。{foo: [1, 4, 7, 10], bar: "baz"}

41

序列化和反序列化

在数据存储的上下文中,序列化(或序列化)是将数据结构或对象状态转换为可以存储(例如,在文件或内存缓冲区中)或传输(例如,通过网络连接链接)并在以后重建的格式的过程。

从一系列字节中提取数据结构的相反操作是反序列化

.org

JSON

JSON(JavaScript Object Notation)是一种开放的标准文件格式和数据交换格式,它使用人类可读的文本来存储和传输由属性值对和数组(或其他可序列化的值)组成的数据对象。它是一种常见的数据格式,在电子数据交换中具有多种用途,包括与服务器的 Web 应用程序。

JSON 是一种与语言无关的数据格式。它源自 JavaScript,但许多现代编程语言都包含生成和解析 JSON 格式数据的代码。JSON 文件名使用扩展名为.json。

.org

使用 Python 解释

在 Python 中,序列化只需将给定的数据结构转换为其有效的 JSON 挂件(例如,Python 的True将转换为 JSON 的true和字典本身将转换为字符串),反之亦然反序列化

Python vs.JSON

您可以在并排比较中轻松发现 Python 和 JSON 表示之间的差异。例如,通过检查它们的布尔值。查看下表,了解在两种情况下使用的基本类型:

代码示例

Python 内置模块json是执行serializationdeserialization的标准方法:

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
Sources:realpython.com,geeksforgeeks.org
2

使用 Python 进行序列化和反序列化的解释

在 python 中,pickle module用于序列化。所以,序列化过程在 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。

使用泡菜反序列化

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”}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(593)
带有前导空格或尾随空格的成员名称的 Json反序列化
上一篇
VisualStudio代码更改文件资源管理器托盘的字体大小
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(43条)