JavaScript 序列化 JSON 详解226


前言

JavaScript 序列化 JSON(JavaScript Object Notation)是指将 JavaScript 对象转换为 JSON 字符串的过程。JSON 是一种轻量级的数据交换格式,广泛用于 web 开发中,因为它易于阅读、编写和解析。

()

JavaScript 提供了 () 函数来序列化对象。该函数将一个对象转换为一个 JSON 字符串。语法如下:```javascript
(value[, replacer[, space]])
```

其中:* value:要序列化的对象。
* replacer:一个可选的函数,用于自定义序列化过程。
* space:一个可选的数字,用于缩进输出的 JSON 字符串(仅影响可读性)。

例子


以下代码将一个 JavaScript 对象序列化为 JSON 字符串:```javascript
const person = { name: "John Doe", age: 30 };
const json = (person);
// 输出:{"name":"John Doe","age":30}
```

自定义序列化

在某些情况下,您可能需要自定义序列化过程。例如,您可能需要忽略某些属性或对值进行特殊处理。为此,您可以使用 () 的 replacer 参数。

replacer 参数是一个函数,它接受两个参数:* key:要序列化的属性的名称。
* value:属性的值。

该函数可以返回一个新值来替换原始值,或者返回 undefined 来忽略该属性。

例子


以下代码使用 replacer 函数忽略 age 属性:```javascript
const person = { name: "John Doe", age: 30 };
const json = (person, (key, value) => {
if (key === "age") {
return undefined;
}
return value;
});
// 输出:{"name":"John Doe"}
```

格式化 JSON

() 函数可以接受一个可选的 space 参数,它指定缩进输出的 JSON 字符串的空格数。这有助于提高可读性,尤其是在处理复杂 JSON 对象时。

例子


以下代码使用 space 参数缩进输出的 JSON 字符串:```javascript
const person = { name: "John Doe", age: 30 };
const json = (person, null, 2);
// 输出:
/*
{
"name": "John Doe",
"age": 30
}
*/
```

()

与 () 相对应,JavaScript 还提供了 () 函数来解析 JSON 字符串。该函数将一个 JSON 字符串转换为 JavaScript 对象。语法如下:```javascript
(text[, reviver])
```

其中:* text:要解析的 JSON 字符串。
* reviver:一个可选的函数,用于自定义解析过程。

例子


以下代码将一个 JSON 字符串解析为 JavaScript 对象:```javascript
const json = '{"name":"John Doe","age":30}';
const person = (json);
// 输出:{ name: "John Doe", age: 30 }
```

自定义反序列化

与 () 的 replacer 参数类似,() 的 reviver 参数允许您自定义反序列化过程。该函数接受两个参数:* key:要反序列化的属性的名称。
* value:属性的值。

该函数可以返回一个新值来替换原始值,或者返回 undefined 来忽略该属性。

例子


以下代码使用 reviver 函数将所有字符串值转换为大写:```javascript
const json = '{"name":"John Doe","age":30}';
const person = (json, (key, value) => {
if (typeof value === "string") {
return ();
}
return value;
});
// 输出:{ name: "JOHN DOE", age: 30 }
```

JavaScript 序列化 JSON 是 web 开发中一项基本任务。通过使用 () 和 () 函数,您可以轻松地在 JavaScript 对象和 JSON 字符串之间进行转换。通过利用 replacer 和 reviver 参数,您还可以自定义序列化和反序列化过程,以满足您的特定需求。

2025-02-07


上一篇:JavaScript 面向对象编程深度解析

下一篇:JavaScript 对象的全面指南