JSON.stringify( )
是等同于序列化还是有效序列化,或者它只是迈向的必要步骤
序列
换句话说,JSON.stringify( )
是否足够但不是序列化所必需的?或者是必要但不充分?或者,对于JavaScript对象的序列化既不必要也不充分?
答案 0 :(得分:17)
序列化是将数据转换为可以写入磁盘或通过网络传输的格式(或者如果你想要的话,写在纸上)的行为。通常,序列化是将对象转换为文本,但这并不是必需的,因为有多种序列化格式,例如bittorrent' bencoding,旧的/古代标准asn.1格式是二进制的。 / p>
JSON是一种基于文本的序列化格式,由于其简单性,目前非常受欢迎。但它并不是唯一的一个。其他流行的格式包括XML和CSV。
由于其受欢迎程度及其作为javascript对象文字语法的起源,ES5引入了JSON.stringify()
来从对象生成JSON字符串。以前你必须使用库或写一个递归下降解析器来完成这项工作。
那么,JSON.stringify()
是否足以进行序列化?是的,如果您想要的输出格式是JSON。不,如果您需要其他输出格式,例如XML或CSV或bencode。
JSON格式存在限制。一个限制是JSON无法对函数进行编码,因此JSON.stringify()
在序列化时会忽略函数/方法。 JSON也不能编码循环引用。大多数其他序列化格式也有此限制,但由于JSON 看起来像
所以" JSON"之间的关系和#34;序列化"就像丰田普锐斯"之间的关系一样。和"汽车"。 JSON.stringify()
只是一个生成JSON字符串的函数,所以我想这会使它成为丰田工厂。
答案 1 :(得分:3)
旧问题,但以下信息可能对后人有用。
当然,您可以按照您想要的任何方式进行序列化,包括任意数量的自定义方法,但JSON已成为越来越受欢迎的方法。
JSON最明显的好处是它以与JavaScript对象文字相同的方式表示对象,尽管它的灵活性稍差。不过,如果你能用JavaScript表示普通数据,那么JSON就是一个很好的匹配。
最重要的特征是,因为它代表了对象和数组,它可以代表相当复杂的&分层数据。
出于这样或那样的原因,JSON或多或少取代了XML作为在服务器和浏览器之间发送数据的首选序列化。它非常有用,许多语言都包含它们自己的JSON函数(例如,PHP具有更好的名称json_encode
和json_decode
函数),就像一些现代数据库一样。我自己发现使用JSON函数在数据库的单个字段中存储更复杂的数据结构是很方便的,而不需要任何JavaScript。
简短的回答是肯定的,在大多数情况下,这是序列化大多数数据(非二进制)的充分步骤。然而,由于有其他选择,因此不是必要的。
另一方面,序列化二进制数据,现在又是另一个故事......
答案 2 :(得分:-1)
简短的回答...序列化与恕我直言的Stringify相同。