JSON.stringify()
是 JavaScript 中的一个内置方法,用于将 JavaScript 对象或值转换为 JSON 字符串。这个方法在处理数据传输、存储以及在不同系统间交换数据时非常有用。
JSON.stringify()
方法接受三个参数:
JSON.stringify()
将数据发送到服务器。let obj = {
name: "Alice",
age: 25,
skills: ["JavaScript", "Python"]
};
let jsonString = JSON.stringify(obj);
console.log(jsonString); // 输出: {"name":"Alice","age":25,"skills":["JavaScript","Python"]}
// 使用 replacer 函数
let replacer = (key, value) => {
if (typeof value === "string") {
return value.toUpperCase();
}
return value;
};
let jsonStringWithReplacer = JSON.stringify(obj, replacer);
console.log(jsonStringWithReplacer); // 输出: {"name":"ALICE","age":25,"skills":["JAVASCRIPT","PYTHON"]}
// 使用 space 参数美化输出
let prettyJsonString = JSON.stringify(obj, null, 2);
console.log(prettyJsonString);
/*
输出:
{
"name": "Alice",
"age": 25,
"skills": [
"JavaScript",
"Python"
]
}
*/
问题:循环引用导致的 TypeError
。
当对象内部存在循环引用时,JSON.stringify()
会抛出错误。
解决方法:
let circularReference = {};
circularReference.myself = circularReference;
let seen = new WeakSet();
let jsonStringCircular = JSON.stringify(circularReference, (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) {
return '[Circular]';
}
seen.add(value);
}
return value;
});
console.log(jsonStringCircular); // 输出: {"myself":"[Circular]"}
通过这种方式,可以避免因循环引用而导致的问题,并且能够得到一个有效的 JSON 字符串。
领取专属 10元无门槛券
手把手带您无忧上云