杰克逊 vs. 格森 [已结束]

2022-08-31 04:41:32

在搜索了一些现有的JSON库之后,我终于得到了这两个:

  • 杰克逊
  • 谷歌GSon

我对GSON有点偏袒,但网上有消息称GSon遭受了某种天体性能问题(截至2009年9月)。

我正在继续我的比较;与此同时,我正在寻找帮助来下定决心。


答案 1

上周我做了这项研究,最终我得到了同样的2个库。由于我使用的是Spring 3(在其默认的Json视图“JacksonJsonView”中采用了Jackson),因此我更自然地也这样做。2 个 lib 几乎相同...最后,它们只是映射到一个json文件!:)

无论如何,正如你所说,杰克逊的表现是+,这对我来说非常重要。正如你从他们的网页上看到的那样,这个项目也非常活跃,这也是一个非常好的迹象。


答案 2

Jackson和Gson是关于实际数据绑定支持的最完整的Java JSON包;许多其他包仅提供基元 Map/List(或等效的树模型)绑定。两者都完全支持泛型类型,并且对于许多常见用例具有足够的可配置性。

由于我对杰克逊更熟悉,以下是我认为杰克逊比Gson更完整的支持的某些方面(如果我错过了Gson功能,请道歉):

  • 广泛的注释支持;包括完全继承和高级“混合”注释(在无法直接添加注释的情况下,将注释与类相关联)
  • 流(增量)读取,写入,用于超高性能(或内存受限)用例;可以与数据绑定(绑定子树)混合 - 编辑:最新版本的Gson还包括流读器
  • 树模型(类似DOM的访问);可以在各种模型之间转换(树<>java对象<>流)
  • 可以使用任何构造函数(或静态工厂方法),而不仅仅是默认构造函数
  • 字段和 getter/setter 访问(早期的 gson 版本仅使用字段,这可能已经更改)
  • 开箱即用的 JAX-RS 支持
  • 互操作性:也可以使用JAXB注释,对常见软件包(joda,ibatis,cglib),JVM语言(groovy,clojure,scala)具有支持/解决方法
  • 能够强制对输出进行静态(声明)类型处理
  • 支持反序列化多态类型 (Jackson 1.5) -- 可以正确序列化和反序列化 List 等内容(包含其他类型信息)
  • 对二进制内容的集成支持(base64 到/从 JSON 字符串)