JSON.stringify 对比序列化

JSON.stringify versus serialization

JSON.stringify( ) 等同于序列化或有效序列化,还是只是迈向序列化的必要步骤 序列化?

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

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

JSON is one form of text-based serialization format and is currently very popular due to it's simplicity. It's not the only one though. Other popular formats include XML and CSV.

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

那么,JSON.stringify()够连载了吗?可以,如果你想要的输出格式是JSON。否,如果您想要其他输出格式,例如 XML 或 CSV 或 bencode。

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

所以"JSON"和"serialization"之间的关系就像"Toyota Prius"和"car"之间的关系。 JSON.stringify() 只是一个生成 JSON 字符串的函数,所以我想这会使它成为丰田工厂。

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

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

JSON 最明显的好处是它以与 JavaScript 对象文字相同的方式表示对象,尽管它的灵活性稍差。尽管如此,如果您可以在 JavaScript 中表示正常数据,那么 JSON 是一个很好的匹配。

最重要的特点是,由于它表示对象和数组,因此它可以表示相当复杂和分层的数据。

出于某种原因,JSON 已取代 more-or-less 作为在服务器和浏览器之间发送数据的首选序列化。它是如此有用,以至于许多语言都包含它们自己的 JSON 函数(例如,PHP 具有更好命名的 json_encodejson_decode 函数),一些现代数据库也是如此。我自己发现使用 JSON 函数可以方便地将更复杂的数据结构存储在数据库的单个字段中,而无需 JavaScript 任何地方。

简短的回答是肯定的,在大多数情况下,这是序列化大多数数据的充分步骤 (non-binary)。但是,这不是必需的,因为有其他选择。

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

简答...序列化与 Stringify 意思相同,恕我直言。