什么是序列化?
序列化是将对象转换为字节流以通过网络发送或将其存储在文件中的过程,以便可以再次重建对象。
什么是 JSON?
JSON是数据交换格式,具有固定的结构。反序列化时,它返回 Javascript 对象。
我做了一些谷歌搜索,但找不到它们之间的关系?他们经常被一起提及。当我们说需要以 JSON
形式序列化数据时,我需要知道幕后发生了什么。
最佳答案
JSON 基本上是结构化文本。
一个例子是客户端-服务器架构,例如网络浏览器-服务器通信。来自服务器的数据可以从 native 格式序列化为 JSON(文本),并通过网络(字节流)传输到客户端(Web 浏览器)。当数据到达客户端(Web 浏览器)时,它会被反序列化为 Javascript 对象并进行处理(可能会向用户显示某些内容或操纵 UI - 非必要)。
Java 示例
假设我们的服务器应用程序中有一个用 Java 编写的简单类:
class Person {
String name;
int age;
}
我们有这个类的一个实例:
Person person = new Person();
person.name = "John";
person.age = 32;
我们选择使用 JSON 作为服务器到客户端通信的数据格式。将我们的人员实例转换为 JSON 如下所示:
String json = "{\"person\": {\"name\": \"John\", \"age\": 32} }";
现在我们只需将此字符串写入 HTTP 响应,客户端从其中读取它 - 写入字符串。然后该字符串被反序列化为 Javascript 对象。反序列化可能如下所示(有关 JSON.parse 的更多信息,请参见 MDN / JSON.parse ):
/* We get responseText by AJAX and it looks exactly the same that we sent from our web
server - IT IS TEXT, the variable 'json' contents in our Java application. */
var responseText = "..."
var data = JSON.parse( responseText ); // JSON.parse is supported by modern browsers
如果直接作为 Javascript 对象编写,数据看起来像这样:
data = {
person: {
name: john,
age: 32
}
};
因此,我们在服务器端从 Java 对象开始。我们将 Java 对象序列化为 JSON 字符串,并通过网络将其发送到客户端。客户端将 JSON 字符串反序列化为 Javascript 对象(可以以特定于语言的方式正确处理)。
关于javascript - JSON 与序列化有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35723408/