简述JSON stringify
JSON.stringify() 是 JavaScript 中的一个内置方法,用于将 JavaScript 对象或值转换为 JSON 格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
语法
JSON.stringify(value, replacer, space);
value: 需要转换为 JSON 字符串的值(通常是对象或数组)。replacer(可选):- 可以是一个函数,用于自定义序列化过程,选择哪些属性需要被包含在结果中。
- 也可以是一个数组,指定需要包含的属性名。
space(可选):- 用于控制输出字符串的缩进和格式化。
- 可以是数字(表示缩进的空格数)或字符串(用作缩进字符)。
返回值
返回一个表示给定值的 JSON 格式字符串。
基本用法
const obj = {
name: "Alice",
age: 25,
isStudent: true,
hobbies: ["reading", "coding"]
};
const jsonString = JSON.stringify(obj);
console.log(jsonString);
// 输出: {"name":"Alice","age":25,"isStudent":true,"hobbies":["reading","coding"]}
使用 replacer 函数
const obj = {
name: "Alice",
age: 25,
isStudent: true
};
const jsonString = JSON.stringify(obj, (key, value) => {
if (key === "age") return undefined; // 排除 age 属性
return value;
});
console.log(jsonString);
// 输出: {"name":"Alice","isStudent":true}
使用 replacer 数组
const obj = {
name: "Alice",
age: 25,
isStudent: true
};
const jsonString = JSON.stringify(obj, ["name", "isStudent"]);
console.log(jsonString);
// 输出: {"name":"Alice","isStudent":true}
使用 space 格式化输出
const obj = {
name: "Alice",
age: 25,
isStudent: true
};
const jsonString = JSON.stringify(obj, null, 2);
console.log(jsonString);
// 输出:
// {
// "name": "Alice",
// "age": 25,
// "isStudent": true
// }
注意事项
-
不支持的数据类型:
undefined、函数、Symbol 值在序列化时会被忽略(如果在数组中则会被转换为null)。NaN和Infinity会被转换为null。- Date 对象会被转换为 ISO 格式的字符串。
-
循环引用:
- 如果对象中存在循环引用(即对象引用自身),
JSON.stringify()会抛出错误。
- 如果对象中存在循环引用(即对象引用自身),
-
自定义序列化:
- 如果对象定义了
toJSON()方法,JSON.stringify()会调用该方法并使用其返回值。
- 如果对象定义了
示例:自定义 toJSON()
const obj = {
name: "Alice",
age: 25,
toJSON() {
return {
name: this.name,
isAdult: this.age >= 18
};
}
};
const jsonString = JSON.stringify(obj);
console.log(jsonString);
// 输出: {"name":"Alice","isAdult":true}
总结
JSON.stringify() 是将 JavaScript 对象转换为 JSON 字符串的标准方法,支持自定义序列化和格式化输出。它在数据存储、传输和 API 交互中非常常用。
更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github