JSON.stringify()转换后包含值为undefined数据丢失的问题

最近开发的时候碰到个问题,使用JSON.stringify()转换数据时,如果对象里面的值是undefined,这个值会丢失,

1
2
let obj = {a:1, b:"12", c: "", d: 234, e: undefined};
console.log(JSON.stringify(obj));//'{"a":1,"b":"12","c":"","d":234}'

上面正常的一个对象在使用JSON.stringify转换的时候,e丢了。

JSON.stringify()的实现可以分为以下几个步骤:

1、判断输入参数是否是一个对象类型。如果不是对象类型,则直接返回这个值。
2、创建一个数组,用于存储对象的属性名和对应的值。
3、遍历对象的属性,将属性名和对应的值添加到数组中。
4、根据选项参数控制输出结果的格式。
5、将数组转换为JSON格式的字符串并返回。

并不是所有的数据类型的转换JSON都是支持的,因此部分不支持的就会被忽略掉,比如undefined