Java Serialization vs JSON vs XML

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

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

一般来说,重要的问题是哪个客户端将接收序列化对象 – 浏览器/ 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作为通信协议,它确实简化了开发。 然而,所得到的应用组件将是硬耦合的,这将使其非常难以更换。

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

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

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

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

  • 如果您是使用者是另一个可能在或不在java中的应用程序,那么xml是首选的序列化机制。 Web服务非常重要地使用xml。

  • 如果你的消费者是另一个Java程序,那么肯定是java序列化是首选选项(例如RMI)。 所以它尚未出来:-)。

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

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

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