前端 JS 经典:JSON 对象

53 阅读1分钟

 1. 概念

JSON 只是一种数据格式,JSON 对象中的 key 必须用双引号包裹,如下:

{
  "name": "yqcoder"
}

2. 对象字面量转 JSON 字符串对象

let yqcoder = {
  name: "yqcoder",
};
JSON.stringify(yqcoder); // '{"name":"yqcoder"}'

// 两次 JSON.stringify 加 \
let _yqcoder = {
  name: "yqcoder",
  _name: '{"name":"yqcoder"}',
};
JSON.stringify(_yqcoder); // '{"name":"yqcoder","_name":"{\"name\":\"yqcoder\"}"}'

// 三次 JSON.stringify 加 \\\
let __yqcoder = {
  name: "yqcoder",
  _name: '{"name":"yqcoder"}',
  __name: '{"name":"yqcoder","_name":"{\"name\":\"yqcoder\"}"}',
};
JSON.stringify(__yqcoder); // '{"name":"yqcoder","_name":"{\"name\":\"yqcoder\"}","__name":"{\"name\":\"yqcoder\",\"_name\":\"{\\\"name\\\":\\\"yqcoder\\\"}\"}"}'

3. JSON 过滤

// 通过JSON删除 love,thr
let yqcoder = {
  name: "yq",
  age: 18,
  love: "dyb",
  thr: "aa",
};
JSON.stringify(yqcoder, ["name", "age"]); // '{"name":"yq","age":18}'
JSON.stringify(yqcoder, (key, value) => {
  if (["love", "thr"].includes(key)) {
    return undefined;
  } else {
    return value;
  }
}); // '{"name":"yq","age":18}'