Java Serialization vs JSON vs XML

pet*_*ter 26 java serialization json xml-serialization data-serialization

我想知道在处理通过网络传输对象时我们应该选择什么序列化机制.优缺点都有什么 ?

我知道大多数的我们在使用的时候JSON还是XML用于AJAX自传输格式相当多Javascript格式,再加上JSON是相当轻巧的,其占用空间小,因此是Java系列化完全出表的?

Ari*_*l T 19

一般来说,重要的问题是哪个客户端将接收序列化对象 - 浏览器/ JavaScript引擎,如(node-js),Java客户端,未知/多个客户端.

JSON - JSON语法基本上是JavaScript,因此任何带有JS引擎的组件都能很好地处理它的解析 - 即使复杂的数据结构也会有效地转换为"活"对象.JSON解析器几乎适用于任何语言,即使不使用JS引擎也很容易使用(例如,以Google Gson为例,它可以轻松地将JSON转换为相应的对象),这使得它成为跨语言交流的理想选择. - 例如在消息传递体系结构中.

XML - 分享JSON的许多好处 - 跨语言,轻量级等.例如,Adobe Flex处理XML非常好,甚至比JSON更好.它绝对是JSON的合适替代品.我个人更喜欢JSON的JS语法,但XML也很好.

Java序列化 - 应仅考虑Java到Java通信.一个重要的注意事项是类定义应该在发送端和接收端,并且通常通过传递整个对象不会获得太多.我不排除RMI作为通信协议,它确实简化了开发.然而,所得到的应用组件将是硬耦合的,这将使其非常难以更换.

还有一个注意事项 - 序列化通常有其开销.然而,当通过网络执行通信时,瓶颈通常是网络而不是序列化/反序列化本身.


use*_*613 6

我认为这取决于.如果您正在发送http请求或其他内容,那么JSON或XML显然是一个不错的选择.如果您只是通过tcp套接字发送一个java对象用于某些分布式算法或其他东西,我认为java序列化更容易/更好


San*_*osh 5

虽然通过网络进行序列化,但 XML 和 JSON 都可以工作。这取决于此信息的消费者。

  • 如果消费者是使用 Ajax 请求某些信息并在屏幕上呈现某些内容的浏览器,通常 JSON 是最好的选择,因为它已经是 Javascript 对象格式,并且没有转换为 Javascript 兼容对象的开销。事实上,许多 Ajax 库(例如 jQuery)都对 JSON 有很好的支持。

  • 如果您的使用者是另一个应用程序,它可能是也可能不是 Java,那么 XML 是首选的序列化机制。Web 服务大量使用 XML。

  • 如果您的使用者是另一个 Java 程序,那么 Java 序列化肯定是首选选项(例如 RMI)。所以它还没有出来:-)。

但是是的,XML 和 JSON 之间的界限很模糊。我这里提到的是一般做法。这是一篇很好的文章,将所有方面都放在 XML 与 JSON 上。