JavaScript 生成 JSON 对象119


JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式,它基于 JavaScript 对象语法,广泛用于 Web 应用程序中传输数据。JavaScript 提供了内置的方法来生成 JSON 对象。

使用 ()

() 函数将 JavaScript 对象转换为 JSON 字符串。语法如下:```
(value, replacer?, space?)
```
* value:要转换的 JavaScript 对象。
* replacer:可选,一个函数或数组,它指定转换过程中如何处理对象属性。
* space:可选,一个指定输出 JSON 字符串缩进的字符串或数字。

例如:```
const person = {
name: "John Doe",
age: 30
};
const json = (person);
// 输出:{"name":"John Doe","age":30}
```

使用 ()

() 函数将 JSON 字符串转换为 JavaScript 对象。语法如下:```
(text, reviver?)
```
* text:要解析的 JSON 字符串。
* reviver:可选,一个函数,它指定如何将 JSON 值转换为 JavaScript 对象。

例如:```
const json = '{"name":"John Doe","age":30}';
const person = (json);
// 输出:{name: "John Doe", age: 30}
```

特殊情况

在某些情况下,() 无法正确转换某些数据类型:* 函数和 Symbol:函数和 Symbol 无法序列化为 JSON。
* 环形数据结构:如果 JavaScript 对象包含指向自身的引用,则 () 可能会陷入无限循环中。
* non-finite 数字:Infinity、-Infinity 和 NaN 无法序列化为 JSON。

自定义序列化

对于特殊情况或需要自定义序列化的场景,可以使用 replacer 参数。replacer 是一个函数,它接收两个参数:* key:属性或数组索引。
* value:属性值。

该函数可以返回一个要序列化的替换值,或者返回 undefined 来忽略该属性。

例如,要忽略 name 属性:```
const replacer = (key, value) => {
if (key === "name") {
return undefined;
}
return value;
};
const person = {
name: "John Doe",
age: 30
};
const json = (person, replacer);
// 输出:{"age":30}
```

自定义反序列化

类似地,可以使用 reviver 参数自定义 () 的反序列化行为。reviver 是一个函数,它接收两个参数:* key:属性或数组索引。
* value:属性值。

该函数可以返回一个用于替换的替换值,或者返回 undefined 来忽略该属性。

例如,要将 age 属性转换为字符串:```
const reviver = (key, value) => {
if (key === "age") {
return ();
}
return value;
};
const json = '{"name":"John Doe","age":30}';
const person = (json, reviver);
// 输出:{name: "John Doe", age: "30"}
```

2025-02-14


上一篇:JavaScript 对象比较的深入探讨

下一篇:JavaScript 开发环境全方位配置指南