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

杰克逊 谷歌GSon

我有点偏向于GSON,但网上的消息是,GSON遭受一定的天体性能问题(截至2009年9月)。

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


我上周做了这个研究,最后得到了两个相同的库。当我使用Spring 3(在默认Json视图'JacksonJsonView'中采用Jackson)时,对我来说做同样的事情更自然。2库几乎是一样的…最后,它们只是映射到一个json文件!:)

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

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

因为我更熟悉杰克逊,以下是我认为杰克逊比Gson更全面的支持(如果我错过了Gson的功能,请原谅):

Extensive annotation support; including full inheritance, and advanced "mix-in" annotations (associate annotations with a class for cases where you can not directly add them) Streaming (incremental) reading, writing, for ultra-high performance (or memory-limited) use cases; can mix with data binding (bind sub-trees) -- EDIT: latest versions of Gson also include streaming reader Tree model (DOM-like access); can convert between various models (tree <-> java object <-> stream) Can use any constructors (or static factory methods), not just default constructor Field and getter/setter access (earlier gson versions only used fields, this may have changed) Out-of-box JAX-RS support Interoperability: can also use JAXB annotations, has support/work-arounds for common packages (joda, ibatis, cglib), JVM languages (groovy, clojure, scala) Ability to force static (declared) type handling for output Support for deserializing polymorphic types (Jackson 1.5) -- can serialize AND deserialize things like List correctly (with additional type information) Integrated support for binary content (base64 to/from JSON Strings)

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

看来GSon不支持JAXB。 通过使用JAXB带注释的类来创建或处理JSON消息,我可以通过使用spring MVC共享相同的类来创建Restful Web服务接口。

加上上面已经给出的其他答案。如果不区分大小写对您很重要,那么请使用Jackson。Gson不支持键名不区分大小写,而jackson支持。

这里有两个相关的链接

Gson中的大小写敏感支持: 如何从Json中获得一个不区分大小写的元素?

Jackson的案例敏感性支持 https://gist.github.com/electrum/1260489