【问题标题】:JSON.stringify versus serializationJSON.stringify 与序列化
【发布时间】:2015-07-14 16:48:20
【问题描述】:

JSON.stringify( ) 是否等同于序列化或有效序列化,或者它只是实现的必要步骤 序列化?

换句话说,JSON.stringify( ) 是否足够但不需要序列化?还是必要但不充分?还是 JavaScript 对象的序列化既没有必要也不够?

【问题讨论】:

  • 我可能会补充一点,JSON 旨在表示 JavaScript 对象的 子集,除了它自己的特殊符号(不如 JavaScript 对象字面量灵活)之外,不包括函数属性、AKA 方法。

标签: json node.js serialization


【解决方案1】:

序列化是将数据转换为可以写入磁盘或通过网络传输的格式(如果需要,也可以写在纸上)的行为。通常,序列化是将对象转换为文本,但这不是必需的,因为有几种序列化格式,例如 bittorrent 的 bencoding 和旧/古老的标准 asn.1 格式是二进制的。

JSON 是一种基于文本的序列化格式,由于其简单性,目前非常流行。它不是唯一的。其他流行的格式包括 XML 和 CSV

由于它的流行和起源于 javascript 对象文字语法,ES5 引入了JSON.stringify() 来从对象生成 JSON 字符串。以前您必须使用库或编写递归下降解析器来完成这项工作。

那么,JSON.stringify() 是否足以进行序列化?是的,如果您想要的输出格式是 JSON。不,如果您想要其他输出格式,例如 XML 或 CSV 或 bencode。

JSON 格式存在限制。一个限制是 JSON 不能对函数进行编码,因此JSON.stringify() 在序列化时会忽略函数/方法。 JSON 也不能对循环引用进行编码。大多数其他序列化格式也有这个限制,但是由于 JSON looks 像 javascript 语法,有些人认为它可以做 javascript 对象文字可以做的事情。不能。

所以“JSON”和“序列化”之间的关系就像“Toyota Prius”和“汽车”之间的关系。 JSON.stringify() 只是一个生成 JSON 字符串的函数,所以我想这将使它成为丰田工厂。

【讨论】:

    【解决方案2】:

    老问题,但以下信息可能对后代有用。

    当然,您可以以任何方式序列化,包括任意数量的自定义方法,但 JSON 已成为一种越来越流行的方法。

    JSON 最明显的好处是它以与 JavaScript 对象字面量相同的方式表示对象,尽管它的灵活性稍差一些。不过,如果您可以用 JavaScript 表示普通数据,那么 JSON 是一个很好的匹配。

    最显着的特点是,由于它代表对象和数组,它可以代表相当复杂和分层的数据。

    出于某种原因,JSON 或多或少地取代了 XML,成为在服务器和浏览器之间发送数据的首选序列化。它非常有用,以至于许多语言都包含自己的 JSON 函数(例如,PHP 有更好的名称 json_encodejson_decode 函数),一些现代数据库也是如此。我自己发现使用 JSON 函数在数据库的单个字段中存储更复杂的数据结构很方便,而无需在任何地方看到 JavaScript)。

    简短的回答是肯定的,在大多数情况下,这足以序列化大多数数据(非二进制)。但是,没有必要,因为有其他选择。

    另一方面,序列化二进制数据,现在是另一回事了……

    【讨论】:

      【解决方案3】:

      简短的回答...序列化与 Stringify 的含义相同,恕我直言。

      【讨论】:

      • 嗯,字符串是序列化数据,所以是的
      猜你喜欢
      • 1970-01-01
      • 2017-11-03
      • 2019-03-24
      • 2012-09-04
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多