javascript - JSON 与序列化有何关系?

标签 javascript json serialization

什么是序列化?

序列化是将对象转换为字节流以通过网络发送或将其存储在文件中的过程,以便可以再次重建对象。

什么是 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/

相关文章:

javascript - 以编程方式修复 IE 中的浏览器模式

C#:在对象中是否可以将十进制值转换为字符串或 double 值?

java - 在 Java 中将多个 ArrayList 保存/加载到一个文件中

多维数组的Java序列化

javascript - 开发 Alfresco 的服务器端 JavaScript

javascript - Google 如何在创建新 Google 帐户的表单上为其输入复选框创建复选标记?

javascript - 如何将 Pyramid 的FileResponse接收到ajax中?

javascript - 如何将 JSON 对象字符串转换为 Javascript 数组

php - 将表单保存到 JSON

java - 如何使用GSON序列化json字符串并从中提取键和值?