返回

JSON.stringify() 的第二个和第三个参数:深入解析实现和应用

前端

深入解析 JSON.stringify() 的第二个和第三个参数

JSON.stringify() 的第二个参数是一个可选的 replacer 参数,它可以是一个函数或一个数组。当指定了 replacer 参数时,JSON.stringify() 将使用它来转换对象中的值,然后再将其转换为 JSON 字符串。

replacer 参数可以有以下两种用法:

  • 函数形式: 当 replacer 参数是一个函数时,JSON.stringify() 将对对象中的每个值调用此函数,并将函数的返回值作为该值的 JSON 表示形式。
  • 数组形式: 当 replacer 参数是一个数组时,JSON.stringify() 将仅转换数组中列出的属性,并将其他属性忽略。

JSON.stringify() 的第三个参数是一个可选的 space 参数,它可以是一个数字或一个字符串。当指定了 space 参数时,JSON.stringify() 将在生成的 JSON 字符串中添加指定数量的空格或制表符,以使字符串更易于阅读和理解。

如何使用 JSON.stringify() 的第二个和第三个参数

JSON.stringify() 的第二个和第三个参数可以用于实现各种有用的功能,例如:

  • 使用 replacer 参数来过滤对象中的属性:
const obj = {
  name: 'John Doe',
  age: 30,
  salary: 100000
};

const replacer = (key, value) => {
  if (key === 'salary') {
    return undefined;
  }

  return value;
};

const jsonStr = JSON.stringify(obj, replacer);

console.log(jsonStr); // {"name":"John Doe","age":30}
  • 使用 replacer 参数来转换对象中的值:
const obj = {
  name: 'John Doe',
  age: 30,
  salary: 100000
};

const replacer = (key, value) => {
  if (key === 'salary') {
    return '
const obj = {
  name: 'John Doe',
  age: 30,
  salary: 100000
};

const replacer = (key, value) => {
  if (key === 'salary') {
    return '$' + value;
  }

  return value;
};

const jsonStr = JSON.stringify(obj, replacer);

console.log(jsonStr); // {"name":"John Doe","age":30,"salary":"$100000"}
#x27;
+ value; } return value; }; const jsonStr = JSON.stringify(obj, replacer); console.log(jsonStr); // {"name":"John Doe","age":30,"salary":"$100000"}
  • 使用 space 参数来格式化 JSON 字符串:
const obj = {
  name: 'John Doe',
  age: 30,
  salary: 100000
};

const jsonStr = JSON.stringify(obj, null, 2);

console.log(jsonStr);
// {
//   "name": "John Doe",
//   "age": 30,
//   "salary": 100000
// }

结论

JSON.stringify() 的第二个和第三个参数是两个非常有用的参数,可以用于实现各种功能。通过了解这两个参数的用法,我们可以更灵活地控制 JSON 字符串的格式和内容。