首页 文章

Jackson VS. Gson [关闭]

提问于
浏览
322

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

  • Jackson

  • Google GSon

我对GSON有点偏爱,但网上的消息是GSon遭受了某种天体表现issue(截至2009年9月) .

我继续比较;与此同时,我正在寻求帮助来决定我的想法 .

5 回答

  • 12

    我上周做了这项研究,最后得到了相同的2个库 . 正如我所做的那样,对我来说更自然 . 2 lib几乎相同......最后它们只是映射到json文件! :)

    无论如何,正如你所说 Jackson 有一个表现,这对我来说非常重要 . 从their web page可以看到该项目也非常活跃,这也是一个非常好的迹象 .

  • 36

    似乎GSon不支持JAXB . 通过使用JAXB注释类来创建或处理JSON消息,我可以使用spring MVC共享同一个类来创建Restful Web Service接口 .

  • 105

    Jackson和Gson是关于实际数据绑定支持的最完整的Java JSON包;许多其他包只提供原始Map / List(或等效树模型)绑定 . 两者都完全支持泛型类型,以及许多常见用例的足够可配置性 .

    由于我对 Jackson 比较熟悉,我认为 Jackson 在某些方面比Gson有更完整的支持(如果我错过Gson功能,我会道歉):

    • 广泛的注释支持;包括完全继承和高级"mix-in"注释(对于无法直接添加它们的情况,将注释与类关联)

    • 流式(增量)读取,写入,用于超高性能(或内存限制)用例;可以与数据绑定混合(绑定子树) - EDIT :最新版本的Gson还包括流式读取器

    • 树模型(类似DOM的访问);可以在各种模型之间转换(树< - > java对象< - >流)

    • 可以使用任何构造函数(或静态工厂方法),而不仅仅是默认构造函数

    • 字段和getter / setter访问(早期的gson版本仅使用字段,这可能已更改)

    • 开箱即用的JAX-RS支持

    • 互操作性:也可以使用JAXB注释,支持/解决常见软件包(joda,ibatis,cglib),JVM语言(groovy,clojure,scala)

    • 能够强制输出静态(声明)类型处理

    • 支持反序列化多态类型(Jackson 1.5) - 可以正确序列化和反序列化List(带有其他类型信息)

    • 对二进制内容的集成支持(base64到/来自JSON字符串)

  • 6

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

  • 81

    添加上面已经给出的其他答案 . 如果案件不敏感对你很重要,那就用 Jackson 吧 . Gson不支持关键名称不区分大小写,而 Jackson 则支持 .

    这是两个相关的链接

    (否)Gson的案例敏感性支持:GSON: How to get a case insensitive element from Json?

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

相关问题