Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 杰克逊对格森_Java_Json_Comparison_Gson_Jackson - Fatal编程技术网

Java 杰克逊对格森

Java 杰克逊对格森,java,json,comparison,gson,jackson,Java,Json,Comparison,Gson,Jackson,在搜索了一些现有的JSON库之后,我最终得到了以下两个: 杰克逊 谷歌GSon 我有点偏袒GSON,但网上有消息称,GSON在某种程度上受到了天体性能的影响(截至2009年9月) 我继续我的比较;与此同时,我正在寻求帮助来下决心。我上周做了这项研究,结果得到了同样的两个库。当我使用Spring3(在默认的Json视图“”中采用Jackson)时,我自然也会这么做。两个库几乎相同。。。最后,它们只是映射到一个json文件!:) 不管怎么说,正如你所说的那样,杰克逊在表现上有一个+,这对我来说非

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

  • 杰克逊
  • 谷歌GSon
我有点偏袒GSON,但网上有消息称,GSON在某种程度上受到了天体性能的影响(截至2009年9月)


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

我上周做了这项研究,结果得到了同样的两个库。当我使用Spring3(在默认的Json视图“”中采用Jackson)时,我自然也会这么做。两个库几乎相同。。。最后,它们只是映射到一个json文件!:)


不管怎么说,正如你所说的那样,杰克逊在表现上有一个+,这对我来说非常重要。正如您从中看到的,该项目也非常活跃,这也是一个非常好的迹象。
Jackson和Gson是关于实际数据绑定支持的最完整的Java JSON包;许多其他包只提供基本的映射/列表(或等效的树模型)绑定。 两者都完全支持泛型类型,并且对于许多常见用例具有足够的可配置性

由于我对Jackson比较熟悉,以下是一些方面,我认为Jackson比Gson获得了更全面的支持(如果我错过了Gson的功能,请道歉):

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

Gson 1.6现在包括一个低级流API和一个新的解析器,实际上比Jackson更快。

Gson似乎不支持JAXB。
通过使用JAXB注释类来创建或处理JSON消息,我可以共享同一个类来使用SpringMVC创建RESTfulWeb服务接口

添加到上面已经给出的其他答案中。如果案件不敏感对你来说很重要,那么就使用Jackson。Gson不支持键名不区分大小写,而jackson支持

这里有两个相关链接

(否)Gson中的区分大小写支持:

Jackson中的案例敏感性支持

此外,谷歌GSon还不支持循环引用。Jackson处理过吗?循环引用支持。。。这应该是一个主要特性,但我不确定它是否支持它们,到目前为止,我从未遇到过循环引用(即使它们应该很常见,尤其是在模型中)。这里有另一个基准,可以突出显示杰克逊有多快,如果与GSon相比。序列化/反序列化速度看起来快了100倍Jackson目前不处理循环引用。如果这很重要,XStream会;不确定从1.6版开始是否有任何原生json包(可能是flex json?),Jackson确实支持循环引用。请参阅以供参考。Jackson有更多的安全问题,因为fortifyI希望看到一个支持这一点的度量。至少在:的测量结果仍然表明GSON与其他Java json包没有竞争力。我们有可用的微基准测试(检查到trunk/metrics目录下的GSON subversion存储库)表明,在简单的对象转换上,低级别的流API可以快10倍。还有其他一些基准(我需要鼓励原作者发表这些基准),这个低级API目前胜过包括Jackson在内的其他库。然而,创建全面且具有代表性的基准测试需要花费一些时间和精力。还有一个数据点:jvm序列化器()现在有“gson/manual”测试,它使用gson流api作为数据绑定的替代方案。一旦作者运行了“官方”号码,维基就可以更新了。但从本地运行来看,我认为它不支持超高速的说法(除上述内容外,还包括官方数据——流式Gson比数据绑定快,但不符合Jackson的性能水平)。。。对于后续的任何人来说,Gson 2.1最终确实带来了显著且可衡量的性能改进。此外,对于Android的使用,我看到的最新性能基准是:-2008年1月,2011年一个简短提示:任何选择GSon的人都应该确保使用2.1——它的性能最终明显优于早期版本。到目前为止,已有74票支持,这个问题显然有一些有价值的答案。好答案胜过“非建设性”问题。投票重开。杰克逊的文件现在变得非常复杂。实际上,这篇文章总结了许多在其他包中没有找到的杰克逊特性。我认为不需要注释是GSON的一个特性,而不是缺陷(你列出了至少3次以上)。杰克逊和GSON都不需要注释。但在我看来,将注释作为选项是一个很有价值的特性(特别是“混合注释”,这是al的附加处理选项)