赞助

当使用JSON.stringify函数时,第二个参数是一个数组或一个函数,用于控制序列化过程中对象的属性。第三个参数是一个用于控制缩进的数字或字符串,用于美化输出的可选参数。

让我们通过一个例子来说明:

假设我们有以下 JavaScript 对象:

const person = {
  name: 'John',
  age: 30,
  address: {
    city: 'New York',
    zip: '10001'
  }
};

现在,我们将使用JSON.stringify,通过第二个参数选择性地包含/排除属性:

// 示例 1: 仅包含 'name' 和 'age'
const jsonString1 = JSON.stringify(person, ['name', 'age']);
console.log(jsonString1);
// 输出: {"name":"John","age":30}

// 示例 2: 使用 replacer 函数转换值
const jsonString2 = JSON.stringify(person, (key, value) => {
  if (key === 'age') {
    return value * 2; // 年龄加倍
  }
  return value;
});
console.log(jsonString2);
// 输出: {"name":"John","age":60,"address":{"city":"New York","zip":"10001"}}

现在,我们将使用第三个参数来控制缩进:

// 示例 3: 使用数字指定缩进
const jsonString3 = JSON.stringify(person, null, 2);
console.log(jsonString3);
// 输出:
// {
//   "name": "John",
//   "age": 30,
//   "address": {
//     "city": "New York",
//     "zip": "10001"
//   }
// }

在这个示例中,第三个参数是 2,表示使用两个空格进行缩进。

JSON.parse 函数有两个参数:JSON.parse(text, reviver)

  1. text: 必需,要被解析的 JSON 字符串。
  2. reviver (可选):用于在返回之前修改解析后的结果。它是一个函数,每个键值对都会被调用一次,可以返回一个修改后的值。
  3. const jsonString = '{"name": "John", "age": 30, "city": "New York"}';
    
    // 不使用 reviver 参数
    const parsedWithoutReviver = JSON.parse(jsonString);
    console.log(parsedWithoutReviver);
    // 输出: { name: 'John', age: 30, city: 'New York' }
    
    // 使用 reviver 参数
    const parsedWithReviver = JSON.parse(jsonString, (key, value) => {
      if (key === 'age') {
        return value - 5; // 修改 age 的值
      }
      return value;
    });
    
    console.log(parsedWithReviver);
    // 输出: { name: 'John', age: 25, city: 'New York' }

    在这个例子中,reviver 函数被用来修改 JSON 对象的解析结果。

posted on 2023-11-14 15:27  Tsunami黄嵩粟  阅读(9)  评论(0编辑  收藏  举报