JSON.stringfy的用法

JSON.stringify是日常开发中经常用到的JSON对象中的一个方法,用于将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer 是数组,则可选择性地仅包含数组指定的属性。

 

简而言之,就是用于将对象转换成JSON字符串。

JSON.stringify(value[, replacer [, space]])
  • value:必填参数,需要序列化的JSON对象。

  • replacer:可选参数。

    • 函数类型:则在序列化过程中,被序列化的值每个属性都会经过该函数的转换和处理;

    • 数组类型:则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;

    • null或未提供:则对象所有的属性都会被序列化。

  • space:可选参数,用来控制字符串之间的间距。

  • 指定缩进用的空白字符串,用于美化输出(pretty-print);

  • 数字类型,它代表有多少的空格;上限为10。小于1,意味着没有空格;

  • 字符串类型,当字符串长度超过10个字母,取其前10个字母,该字符串将被作为空格;

  • null或未提供,将没有空格。 

注意:

  • 循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误。

  • 布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。

  • undefined、任意的函数以及symbol值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。函数、undefined被单独转换时,会返回 undefined,如JSON.stringify(function(){}) or JSON.stringify(undefined)。这就是为什么对象中有这些类型的属性,不能使用JSON.parse(JSON.stringify())来进行深拷贝。

  • Date 日期调用了 toJSON() 将其转换为了 string 字符串(同Date.toISOString()),因此会被当做字符串处理。

  • NaN 和 Infinity 格式的数值及 null 都会被当做 null。

  • 其他类型的对象,包括 Map/Set/WeakMap/WeakSet,仅会序列化可枚举的属性。

 

posted @ 2022-08-19 15:07  曼施坦因  阅读(314)  评论(0编辑  收藏  举报