ES12 之后的变化:JSON 现在可以直接支持二进制了
JSON(JavaScript Object Notation)是一种用于存储和交换数据的格式。随着前端应用程序的越来越复杂,JSON 的使用已经变得非常普遍。ES12(ECMAScript 2021)引入了一项新功能,使 JSON 变得更加强大。这个变化就是 JSON 现在可以直接支持二进制了。
JSON.stringify() 方法用于将 JavaScript 对象转换为 JSON 字符串。在 ES12 中,你可以使用 toJSON() 方法将 JavaScript 对象或类序列化为 Uint8Array 对象(一种表示二进制数据的方法),从而可以轻松地将它们存储和传输。
让我们看一个示例:
-- -------------------- ---- ------- ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - -------- - ----- --- - - ----- ---------- ---- --------- -- ----- ------ - ----------------------------------- -- ----------------- ----- ----- - --- ------------------- ------ ------ - - ----- ---- - --- -------------- ---- ----- ------- - -------------- --------------------- -- -------------- - ---- --- ---- --- ---- ---- --- --- --- --- ---- ---- ---- --- --- --- --- ---- ---- --- --- --- --- --- -
在这个示例中,我们使用 toJSON() 方法将 Person 类序列化为 Uint8Array 对象。序列化包括以下步骤:
- 使用 JSON.stringify() 将对象转换为 JSON 字符串。
- 将 JSON 字符串转换为数组,其中每个元素都是 Unicode 码点的数字表示形式。
- 将数组转换为 Uint8Array 对象。
我们可以看到,序列化后的 Uint8Array 对象包含了我们定义的 Person 对象的所有信息。现在,我们可以将它存储在 localStorage 中,或者通过网络发送给某个服务器。
当我们收到二进制 JSON 数据时,我们可以使用以下代码将其反序列化为对象:
const johnObj = JSON.parse(String.fromCharCode(...johnBin)); console.log(johnObj); // { name: 'John', age: 40 }
在这个示例中,我们使用 JSON.parse() 将 Uint8Array 对象转换回字符串,然后使用 String.fromCharCode() 将其转换为原始字符串。最后,我们将原始字符串传递给 JSON.parse() 方法,将其转换为 JavaScript 对象。
这项新功能对于在前端应用程序中处理大量数据的开发人员来说非常有用。它使得在存储和交换数据时处理速度更快,占用更少的内存和网络带宽。因此,你可以更轻松地处理视频、音频、图像和其他二进制数据。
总结
ES12 引入的 JSON 二进制支持功能使得将数据在前端应用程序中存储和传输变得更加容易。通过将对象或类序列化为 Uint8Array 对象,我们可以将数据存储在本地存储或通过网络发送。这项新功能将有助于提高前端应用程序的性能和响应能力。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a502f848841e98941729d0