返回
揭秘鲜为人知的JavaScript JSON魔法
前端
2023-11-26 10:06:42
JSON.stringify()方法的秘密参数
除了第一个参数(要序列化的对象)之外,JSON.stringify()方法还接受两个可选参数:
- replacer :一个函数,用于转换要序列化的对象中的值。
- space :一个数值,用于指定序列化后的JSON字符串中的缩进量。
使用replacer函数转换对象值
replacer函数允许您在序列化对象时转换其值。例如,您可以使用它来:
- 将对象中的日期值转换为字符串。
- 将对象中的特殊字符(如双引号)进行转义。
- 将对象中的循环引用排除在外。
以下示例演示如何使用replacer函数转换对象值:
const obj = {
name: "John Doe",
age: 30,
date: new Date(),
循环引用:obj
};
const replacer = (key, value) => {
if (value instanceof Date) {
return value.toISOString();
} else if (typeof value === "string") {
return value.replace(/"/g, "\\\"");
} else if (value === obj) {
return null; // 排除循环引用
} else {
return value;
}
};
const json = JSON.stringify(obj, replacer, 2);
console.log(json);
输出:
{
"name": "John Doe",
"age": 30,
"date": "2023-02-22T16:15:07.762Z",
"循环引用": null
}
使用space参数格式化JSON字符串
space参数允许您指定序列化后的JSON字符串中的缩进量。这使得JSON字符串更易于阅读和理解。以下示例演示如何使用space参数格式化JSON字符串:
const obj = {
name: "John Doe",
age: 30,
date: new Date()
};
const json = JSON.stringify(obj, null, 2);
console.log(json);
输出:
{
"name": "John Doe",
"age": 30,
"date": "2023-02-22T16:15:07.762Z"
}
结语
JSON.stringify()方法中的replacer和space参数为我们提供了强大的工具来转换对象值和格式化JSON字符串。这使得JSON在数据交换、安全传输、数据格式化等方面的应用更加广泛。掌握这些技巧,可以帮助您编写出更加灵活和可维护的代码。