ES9 中的 JSON.stringify 增强忽略未定义值

阅读时长 3 分钟读完

在开发Web应用程序时,我们通常需要处理和传递JSON数据。JSON是一种流行的数据格式,它以文本格式存储和传输JavaScript对象。JavaScript内置了JSON对象,可以使用JSON.stringify()将对象转换为JSON字符串。ES9中,JSON.stringify()得到了一个增强版,可以在序列化过程中忽略未定义的属性值。

ES9的新特性:JSON.stringify增强

在ES9之前,当我们使用JSON.stringify()来序列化一个对象时,它将无法忽略未定义的属性值。咱们来看一个实例:

输出结果:

由于 age 的值为 undefined,JSON.stringify()输出了 null。但在ES9中,剔除了值为 undefined 的属性,输出结果为:

针对浏览器的支持

大多数现代浏览器支持 ES9 中JSON.stringify的增强特性,如Chrome,Firefox,Safari和Edge。如果你正在使用一个不支持ES9的浏览器,可以采用polyfill解决。

如何使用

使用ES9的JSON.stringify()与其之前版本相同,可以传递三个参数:

  1. 要序列化的对象
  2. 转换函数
  3. 缩进,作为输出字符串中的空格数(最大为10)

如下实例中,我们设置缩进为2,使用JSON.stringify忽略undefined值属性:

-- -------------------- ---- -------
----- ------ - -
  ----- --------
  ---- ----------
  ----------- ----
--
----- ------ - ---------------------- ----- ------ -- -
  -- ------ --- ---------- -
    ------ ----------
  -
  ------ ------
-- ---
--------------------

输出:

总结

在ES9中,JSON.stringify()增强了对undefined值属性的支持。如果你需要过滤未定义的属性值,这个特性会很有帮助。现代浏览器应该支持此特性,但需要查看所使用的浏览器是否支持。在使用时,还可以通过传递转换函数来定制转换结果。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6493e0cf48841e9894175462

纠错
反馈