我是JSON的新手。现在,我需要为我的Flash ActionScript 3.0使用JSON。所以我找到了一个用于JSON的库,我看到了术语“反序列化”和“序列化”。他们是什么意思?
答案 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中,“序列化”不只是将给定的数据结构(例如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}'
答案 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