什么是JSON中的反序列化和序列化?

时间:2010-07-23 09:04:51

标签: json serialization deserialization json-deserialization json-serialization

我是JSON的新手。现在,我需要为我的Flash ActionScript 3.0使用JSON。所以我找到了一个用于JSON的库,我看到了术语“反序列化”和“序列化”。他们是什么意思?

4 个答案:

答案 0 :(得分:144)

JSON是一种对字符串中的对象进行编码的格式。 Serialization表示将对象转换为该字符串,反序列化是其反向操作。

传输数据或将数据存储在文件中时,数据必须是字节字符串,但复杂对象很少采用这种格式。序列化可以将这些复杂对象转换为字节串以供此类使用。在传输字节串之后,接收器必须从字节串中恢复原始对象。这称为反序列化。

说,你有一个对象

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

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

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

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

答案 1 :(得分:0)

  

在数据存储的上下文中,串行化(或序列化)是将数据结构或对象状态转换为可以存储的格式(例如,在文件或内存缓冲区中)的过程。或传输(例如,通过网络连接链路)或稍后进行重构。 [...]
  从一系列字节中提取数据结构的相反操作是反序列化

来自维基百科:Serialization

Python示例

例如,在Python中,“序列化”不只是将给定的数据结构(例如dict)转换为其有效的JSON挂件而已。

因此,Python True将转换为JSON true,然后将字典本身封装在引号中。

Python模块json在这里非常有用:

data = {
    "president": {
        "name": "Zaphod Beeblebrox",
        "species": "Betelgeusian",
        "male": True,
    }
}

import json
json_data = json.dumps(data, indent=2) # serialize
restored_data = json.loads(json_data) # deserialize

# serialized json_data now looks like:
# '{\n  "president": {\n    "name": "Zaphod Beeblebrox",\n    "species": "Betelgeusian",\n    "male": true\n  }\n}'

来源:realpython.com

答案 2 :(得分:-2)

使用Python进行序列化和反序列化的说明

在python中, pickle模块用于序列化。因此,在Python中,序列化过程称为 pickling 。此模块在Python标准库中可用

使用泡菜序列化

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

答案 3 :(得分:-6)

尝试这个:

Dim jss As New JavaScriptSerializer()

Dim jcon = "{""type"":""clientlist"",""client_list"":[""client 1"",""client 2""]}"

Dim oListjs As List(Of MyModel) = jss.Deserialize(Of List(Of MyModel))(jcon)

Public Class MyModel

Public Property Type() As String

Public Property Client_list() As String()

End Class