gson vs协议缓冲区

时间:2011-02-12 18:19:22

标签: protocol-buffers gson

协议缓冲区(protobuf)优于GSON的优缺点是什么?

在什么情况下protobuf比GSON更合适?

对于一个非常通用的问题,我很抱歉。

2 个答案:

答案 0 :(得分:11)

json(通过gson库)和protobuf都可以在平台之间移植;但

  • protobuf更小(带宽)且更便宜(CPU)读/写
  • json是人类可读/可编辑的(protobuf是二进制文件;没有库支持很难解析)
  • protobuf很容易合并片段 - 只是连接
  • json很容易传递给网页客户端
  • protobuf的主要java版本需要合约定义(.proto)和代码生成; gson似乎允许使用任意pojo(有对这些对象有效的protobuf实现,但不适用于java afaik)

如果表现很关键:protubuf

用于网页(JavaScript)或人类可读:json(可能是通过gson)

答案 1 :(得分:0)

如果您想要效率和跨平台,您应该在包含必要信息的应用程序之间发送原始消息,而不是更多或更少。

通过Java自己的机制(gson,protobufs等)对类进行序列化,创建的数据不仅包含您要发送的信息,还包含有关用于表示数据的数据结构的逻辑结构/层次结构的信息在你的申请中。

这使得这些类和数据映射具有双重目的,一个用于在应用程序内部表示数据,另一个用于传输到另一个应用程序。这两个角色可能存在冲突,开发人员有责任记住他随时使用的类,集合和数据布局也将被序列化。