JSON.stringify()方法3个参数详解

JSON.stringify()是一个将对象转为 JSON 格式字符串的方法。它有三个参数值,分别是:要被序列化的值或对象、替换器(replacer)、空格(space)。

对象

这个参数非常简单,它就是我们需要转换为 JSON 字符串的对象或者值。

let data = {
  name: 'Tom',
  age: 30,
  city: 'New York'
};
let jsonString = JSON.stringify(data);
console.log(jsonString); 
// 输出:'{"name":"Tom","age":30,"city":"New York"}'

替代器(replacer)

JSON.stringify()的第二个参数是一个函数或数组,用于控制如何序列化对象。如果 replacer 参数是一个函数,这个函数会被原始值(对象)的每个属性调用。函数的返回值会被序列化成 JSON 字符串。如果函数返回undefined,那么这个属性就不会被包含在最终的 JSON 字符串中。例如,我们可以使用 replacer 来修改值或者过滤掉不需要的值:

let data = {
  name: 'Tom',
  age: 30,
  city: 'New York'
};
let jsonString = JSON.stringify(data, (key, value) => {
  if (typeof value === 'number') {
    return value.toString();
  }
  return value;
});
console.log(jsonString);
// 输出:'{"name":"Tom","age":"30","city":"New York"}'

如果 replacer 参数是一个数组,那么只有数组中存在的属性才会被包含在最终的 JSON 字符串中。

例如:

let data = {
  name: 'Tom',
  age: 30,
  city: 'New York'
};
let jsonString = JSON.stringify(data, ['name', 'city']);
console.log(jsonString);
// 输出:'{"name":"Tom","city":"New York"}'

空格(space)

JSON.stringify() 的第三个参数用来控制结果字符串的格式。如果 space 是一个数值,那么它决定了结果字符串的缩进层级。否则,如果 space 是一个字符串(例如 \t 或者空格 ' '),那么这个字符串就被用作缩进。例如,我们可以使用空格参数来获得更美观的输出:

let data = {
  name: 'Tom',
  age: 30,
  city: 'New York'
};
let jsonString = JSON.stringify(data, null, 2);
console.log(jsonString);
/* 输出:
{
  "name": "Tom",
  "age": 30,
  "city": "New York"
}
*/
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容