ECMAScript 2019(ES10)的 Object.prototype 的方法序列化和反序列化 JSON 格式的详解

在前端开发中,经常需要将 JavaScript 对象转换成 JSON 格式,或者将 JSON 格式转换成 JavaScript 对象。ECMAScript 2019(ES10)中新增了一些 Object.prototype 的方法,可以方便地实现这些转换操作。

方法介绍

Object.prototype.toJSON()

toJSON() 方法是一个可选的方法,用于将一个 JavaScript 对象转换成 JSON 格式的字符串。当一个对象被序列化时,如果它有 toJSON() 方法,则该方法会被调用,并将其返回值作为序列化结果。

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

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

在上面的例子中,obj 对象有一个 toJSON() 方法,它返回一个只包含 name 属性的新对象。当我们调用 JSON.stringify(obj) 方法时,toJSON() 方法会被自动调用,返回的新对象会被序列化成 JSON 格式的字符串。

JSON.parse()

JSON.parse() 方法用于将一个 JSON 格式的字符串转换成对应的 JavaScript 对象。它接受一个字符串作为参数,返回一个对象。

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

在上面的例子中,我们将一个 JSON 格式的字符串解析成了一个 JavaScript 对象。

JSON.stringify()

JSON.stringify() 方法用于将一个 JavaScript 对象转换成 JSON 格式的字符串。它接受一个对象作为参数,返回一个字符串。

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

在上面的例子中,我们将一个 JavaScript 对象序列化成了一个 JSON 格式的字符串。

应用示例

序列化和反序列化

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

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

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

在上面的例子中,我们定义了一个具有 toJSON() 方法的对象 obj,并将它序列化成了 JSON 格式的字符串 json。然后,我们将 json 字符串反序列化成了一个 JavaScript 对象 obj2

序列化时增加缩进

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

在上面的例子中,我们将 obj 对象序列化成了 JSON 格式的字符串,并使用第二个参数指定了缩进字符数为 2。这样,生成的 JSON 字符串就具有了可读性。

序列化时排除属性

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

在上面的例子中,我们将 obj 对象序列化成了 JSON 格式的字符串,并使用第二个参数指定了要序列化的属性列表。这样,生成的 JSON 字符串中就只包含了 name 属性。

总结

ECMAScript 2019(ES10)中新增的 Object.prototype 的方法可以方便地实现 JavaScript 对象和 JSON 格式之间的转换。toJSON() 方法可以定制对象的序列化过程,JSON.stringify() 方法可以将一个 JavaScript 对象序列化成 JSON 格式的字符串,JSON.parse() 方法可以将一个 JSON 格式的字符串解析成对应的 JavaScript 对象。在实际开发中,我们可以根据需求灵活使用这些方法,提高开发效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d1d414add4f0e0ffa6ddcd