在开发Web应用程序时,我们通常需要处理和传递JSON数据。JSON是一种流行的数据格式,它以文本格式存储和传输JavaScript对象。JavaScript内置了JSON对象,可以使用JSON.stringify()将对象转换为JSON字符串。ES9中,JSON.stringify()得到了一个增强版,可以在序列化过程中忽略未定义的属性值。
ES9的新特性:JSON.stringify增强
在ES9之前,当我们使用JSON.stringify()来序列化一个对象时,它将无法忽略未定义的属性值。咱们来看一个实例:
const object = { name: "David", age: undefined, occupation: null }; console.log(JSON.stringify(object));
输出结果:
{"name":"David","age":null,"occupation":null}
由于 age 的值为 undefined,JSON.stringify()输出了 null。但在ES9中,剔除了值为 undefined 的属性,输出结果为:
{"name":"David","occupation":null}
针对浏览器的支持
大多数现代浏览器支持 ES9 中JSON.stringify的增强特性,如Chrome,Firefox,Safari和Edge。如果你正在使用一个不支持ES9的浏览器,可以采用polyfill解决。
如何使用
使用ES9的JSON.stringify()与其之前版本相同,可以传递三个参数:
- 要序列化的对象
- 转换函数
- 缩进,作为输出字符串中的空格数(最大为10)
如下实例中,我们设置缩进为2,使用JSON.stringify忽略undefined值属性:
-- -------------------- ---- ------- ----- ------ - - ----- -------- ---- ---------- ----------- ---- -- ----- ------ - ---------------------- ----- ------ -- - -- ------ --- ---------- - ------ ---------- - ------ ------ -- --- --------------------
输出:
{ "name": "David", "occupation": null }
总结
在ES9中,JSON.stringify()增强了对undefined值属性的支持。如果你需要过滤未定义的属性值,这个特性会很有帮助。现代浏览器应该支持此特性,但需要查看所使用的浏览器是否支持。在使用时,还可以通过传递转换函数来定制转换结果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6493e0cf48841e9894175462