JSON.stringify(object, replacer, space)
stringify 会深度等进行字串化

  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([new Number(1), new String("false"), new Boolean(false)]);
  7. // '[1,"false",false]'
  8. JSON.stringify({x: undefined, y: Object, z: Symbol("")});
  9. // '{}'
  10. JSON.stringify([undefined, Object, Symbol("")]);
  11. // '[null,null,null]'

对于包装类会进行转为原始值
function,不可枚举的属性,undefined,Object,Symbol 会被忽略
object {} 对象中会跳过,在 array [] 会以 null 替代

replacer

数组

  • 只会对数组中的元素对应在 Object 的 key 进行字串化,其它都 会被忽略

回调函数 function
function(key, value) 按照返回 value 进行字串化,如果是返回 undefined 会被忽略

function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);

space

数字

  • 设定每级别缩进的空格个数(最多 10 个)

字符串

  • 以这字符串作为缩进的字符代替默认的每级别的缩进空格