JSON.stringfy()

288 阅读1分钟
  1. JSON.stringfy()在开发中用处很大,但是遇到以下问题的时候就会出现问题
const error = new Error('This is an error')
JSON.stringify(error)

// => "{}"

如上所示,经过处理的error错误是个空对象,这个时候就需要利用JSON.stringfy的第二个参数,如下所示

const error = new Error('This is an error')
JSON.stringify(error,Object.getOwnPropertyNames(error))

我目前测试是在promise的catch中会有上边这个问题

  1. JSON.stringify()将值转化为相应的格式
  • 转换值如果有toJSON方法,该方法定义什么值被转化
  • 非数组对象的属性不能保证以特定的顺序出现在转化后的字符串中
  • 布尔,字符串和数值的包装对像会在转化过程中会自动转化为对应的原始值
  • undefined,函数和symbol在转化过程中会被忽略,或者转化成null
  • 包含循环引用的对象,会抛出错误
  • 以symbol为属性的属性值会被忽略掉
  • date日期调用了toJSON会被转化成字符串
  • NaN和infinity的数值会被转化成null或者当成null
  • 其它类型的对象,如map,set仅会转化可枚举的值 3.JSON.stringify语法 JSON.stringify(value[, replacer [, space]])
  • value是需要被转化的值
  • replacer是可选的,可以是数组,代表需要转化的属性,也可以是function,此时value的所有属性都会经过该函数的转化和处理,如果该参数为null或者未提供,则所有属性都会被序列化
  • space 可选,指定缩进用的空白字符个数