1.**JSON.parse()**

方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。
语法:JSON.parse(text[, reviver])
image.png

  1. var json = '{"result":true, "count":42}';
  2. obj = JSON.parse(json);
  3. console.log(obj.count);
  4. // expected output: 42
  5. console.log(obj.result);
  6. // expected output: true

1.2使用 reviver 函数

如果指定了 reviver 函数,则解析出的 JavaScript 值(解析值)会经过一次转换后才将被最终返回(返回值)。
更具体点讲就是:解析值本身以及它所包含的所有属性,会按照一定的顺序(从最最里层的属性开始,一级级往外,最终到达顶层,也就是解析值本身)分别的去调用 reviver 函数,在调用过程中,当前属性所属的对象会作为 this 值,当前属性名和属性值会分别作为第一个和第二个参数传入 reviver 中。
如果 reviver 返回 undefined,则当前属性会从所属对象中删除,如果返回了其他值,则返回的值会成为当前属性新的属性值。
当遍历到最顶层的值(解析值)时,传入 reviver 函数的参数会是空字符串 ""(因为此时已经没有真正的属性)和当前的解析值(有可能已经被修改过了),当前的 this 值会是 {"": 修改过的解析值},在编写 reviver 函数时,要注意到这个特例。(这个函数的遍历顺序依照:从最内层开始,按照层级顺序,依次向外遍历)
image.png

2.**JSON.stringify()**

将一个JavaScript值(对象或者数组)转换为一个 JSON字符串
语法:JSON.stringify(value[, replacer [, space]])
image.png

  1. JSON.stringify({}); // '{}'
  2. JSON.stringify(true); // 'true'
  3. JSON.stringify("foo"); // '"foo"'
  4. JSON.stringify([1, "false", false]); // '[1,"false",false]'
  5. JSON.stringify({ x: 5 }); // '{"x":5}'
  6. JSON.stringify({x: 5, y: 6});
  7. // "{"x":5,"y":6}"

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify