你可能不知道的JSON.stringify()详解
简介
JSON.stringify() 是 JavaScript 内置的一个可将对象转换为 JSON 字符串的方法。它将对象序列化为一个字符串,以便于存储或传输。JSON.stringify() 还可以接受一个函数作为第二个参数,用于控制转换过程。
JSON.stringify() 的参数
JSON.stringify() 接受两个参数:
JSON.stringify(value[, replacer[, space]])
value
: 要序列化的值(对象,数组等)。replacer
: 用于控制转换过程的函数或数组。space
: 控制格式化的字符串或数值,用于缩进格式。
默认行为
当序列化一个对象时,默认情况下,JSON.stringify() 将会忽略对象中的 undefined
值,以及所有函数,因为 JSON 格式并不支持这些类型。
如果对象中有一个值是 NaN
,则在序列化时会被转换为 null
。如果对象中有一个值是 Infinity
或 -Infinity
,则在序列化时会被转换为 null
。
replacer 参数
replacer 参数可以是一个函数或一个数组,用于控制序列化的过程。
replacer 为函数
如果 replacer 是一个函数,则该函数将被调用,并传入两个参数:键和值。函数可以返回一个用于替换原始值的新值,也可以返回 undefined,表示删除值。
示例:
const person = {
name: "Tom",
age: 20,
address: {
city: "Beijing",
street: "Wangfujing"
}
};
function replacer(key, value) {
if (key === "street") {
return undefined;
}
return value;
}
const str = JSON.stringify(person, replacer);
console.log(str); // {"name":"Tom","age":20,"address":{"city":"Beijing"}}
在上面的示例中,我们将对象中的 street
字段删除了。
replacer 为数组
如果 replacer 是一个数组,则该数组应该是一个键列表,仅包含要序列化的属性。
示例:
const person = {
name: "Tom",
age: 20,
address: {
city: "Beijing",
street: "Wangfujing"
}
};
const str = JSON.stringify(person, ["name", "address"]);
console.log(str); // {"name":"Tom","address":{"city":"Beijing","street":"Wangfujing"}}
在上面的示例中,我们只序列化了 name
和 address
字段。
space 参数
space 参数用于控制 JSON 字符串的格式化,它可以是一个字符串或一个数值,在字符串情况下,字符串将被用作缩进,每次缩进一个字符串(通常是空格)的副本。在数字情况下,将使用对应数量的空格进行格式化。
示例:
const person = {
name: "Tom",
age: 20,
address: {
city: "Beijing",
street: "Wangfujing"
}
};
const str = JSON.stringify(person, null, 2);
console.log(str);
// {
// "name": "Tom",
// "age": 20,
// "address": {
// "city": "Beijing",
// "street": "Wangfujing"
// }
// }
const str2 = JSON.stringify(person, null, "\t");
console.log(str2);
// {
// "name": "Tom",
// "age": 20,
// "address": {
// "city": "Beijing",
// "street": "Wangfujing"
// }
// }
在上面的示例中,我们使用了空格和 tab 进行格式化。
结论
JSON.stringify() 是一个非常有用的方法,可以用于将对象序列化为字符串,以便于存储或传输。通过使用 replacer 和 space 参数,我们可以更好地控制序列化过程的细节,以生成满足要求的 JSON 字符串。
参考资料
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你可能不知道的JSON.stringify()详解 - Python技术站