Java Serialization vs JSON vs XML

问题描述 投票:24回答:4

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

我知道大多数时候我们使用JSONXML用于AJAX,因为传输格式几乎是Javascript格式,加上JSON非常轻巧,占用空间小,因此Java序列化完全不在桌面之外?

java json serialization xml-serialization data-serialization
4个回答
19
投票

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

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

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

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

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


6
投票

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


4
投票

通过网络进行序列化时,xml和json都可以正常工作。这取决于消费者的这些信息。

  • 如果消费者是使用Ajax来请求某些信息并在屏幕上呈现某些内容的浏览器,通常jason是最好的选择,因为它已经是Javascript对象格式,并且没有转换为Javascript兼容对象的开销。事实上,许多Ajax库(例如jQuery)都对json有很好的支持。
  • 如果您是使用者是另一个可能在或不在java中的应用程序,那么xml是首选的序列化机制。 Web服务非常重要地使用xml。
  • 如果你的消费者是另一个Java程序,那么肯定是java序列化是首选选项(例如RMI)。所以它尚未出来:-)。

但是,XML和Json之间存在模糊界限。我在这里提到的是一般做法。这是一个nice article把所有方面放在xml vs jason上。


1
投票

我认为作为开发人员,我们不需要处理响应对象的序列化。但是如果我们考虑使用JSON,它就可以选择优于XML。

  1. 与XML不同,JSON Response不需要编码响应。
  2. 与XML相比,处理和处理JSON更快,因为它没有被解析。
  3. AJAX的XML响应始终编码,因此处理需要时间。
  4. JSON最适合Jquery用于UI相关编码,速度更快。
  5. 处理大量数据例如:从服务器获取索引数据,JSON处理速度更快。
© www.soinside.com 2019 - 2024. All rights reserved.