JSON.stringify与序列化

JSON.stringify()等价于序列化还是有效序列化,还是仅仅是序列化的必要步骤?

JSON.stringify()是否足够,但不是序列化所必需的? 或者是必要的,但不够? 或者,JavaScript对象的序列化既不必要也不足够?

序列化是将数据转换为可写入磁盘或通过networking传输的格式(或者如果您想要的话,可以在纸上书写)。 通常情况下,序列化正在将对象转换为文本,但这并不是必须的,因为有几种序列化格式,比如bittorrent的bencoding和旧/旧标准asn.1格式是二进制的。

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

由于它的stream行性和起源,JavaScript对象的文字语法ES5引入了JSON.stringify()从一个对象中生成一个JSONstring。 以前,您必须使用库或编写recursion下降parsing器来完成这项工作。

那么, JSON.stringify()足够用于序列化了吗? 是的,如果你想要的输出格式是JSON。 不,如果您需要其他输出格式,如XML或CSV或bencode。

JSON格式有限制。 一个限制是JSON不能编码函数,所以JSON.stringify()在序列化时会忽略函数/方法。 JSON也不能编码循环引用。 大多数其他的序列化格式也有这个限制,但由于JSON 看起来像JavaScript语法,有些人认为它可以做JavaScript对象字面值。 它不能。

所以“JSON”与“系列化”的关系就像是“丰田普锐斯”与“汽车”的关系。 JSON.stringify()只是一个生成JSONstring的函数,所以我想这会使它成为一个丰田工厂。

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

当然,你可以用任何你想要的方式连载,包括任意数量的自定义方法,但是JSON已经成为一种越来越stream行的方法。

JSON的最明显的好处是,它代表对象,就像JavaScript对象文字一样,尽pipe它稍微不灵活。 不过,如果你可以在JavaScript中表示正常的数据,那么JSON是一个很好的匹配。

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

由于某种原因,JSON或多或less地取代了XML,作为在服务器和浏览器之间发送数据的首选序列化。 许多语言都包含自己的JSON函数(例如,PHP具有更好的名为json_encodejson_decode函数),这是非常有用的,正如一些现代数据库一样。 我自己已经发现使用JSON函数在数据库的单个字段中存储更复杂的数据结构(在任何地方都不需要JavaScript)是很方便的)。

简单的答案是肯定的,大多数情况下,这是序列化大多数数据(非二进制)的足够的步骤。 然而,这不是必要的,因为有其他select。

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