还有另一个名为 Genson 的库http://code.google.com/p/genson/。
实际上,Genson 比 Gson 更快,具有更多功能,并且性能接近 jackson(但它更轻量级),请参见http://code.google.com/p/genson/wiki/Metrics。它使用流式 api 而不是 dom 模型,带来更好的可扩展性,并且在 Web 应用程序中很好,您可以在输入到达时处理转换。
Genson 非常适合各种用例,从简单的转换到所有流程的完全定制。您可以配置很多东西(使用字段和/或方法,使用带参数且不带任何注释的构造函数,按可见性过滤属性等等)。你应该看看维基。
它的最新版本 (0.91) 在 maven 中央存储库中可用。
<dependency>
<groupId>com.owlike</groupId>
<artifactId>genson</artifactId>
<version>0.91</version>
</dependency>
免责声明:我是图书馆的作者,但我尽量做到客观(尤其是在基准测试中)。
编辑
关于 Gson 和 Jackson 的几句话。我已经使用 Jackson 2 年多了,还有一点 Gson。首先要注意的是,Jackson 是目前最快的 json/java 库(Gesnon 试图击败它,但它很难)。Jackson 还有很多功能和配置可能性(大多数基于注释)。我对 Jackson 有标准和高级的使用,在我需要 Jackson 没有提供的功能之前,这很好。我发现这个库真的很难扩展(对于我的用例,如果不重写大部分是不可能的)。
然后我尝试了Gson。关于 Gson,首先要注意的是它不使用 getter/setter,而只使用字段!它的表现并不好(尤其是与杰克逊或根森相比)。随着最新版本的改进,它们还提供了流式 API,但仍然不够快。一开始,它的主要优势是对 Java 泛型的良好支持,但 Jackson 和 Genson 也提供了它。另请注意,Gson 的开箱即用功能比 Genson 或 Jackson 少。我还尝试在 Gson 中实现我需要的功能,但我发现 Beans 数据绑定部分不可扩展(几乎没有扩展点的单个类中的所有内容),所以我必须重写它。这是毫无疑问的,这就是我最终创建 Genson 的方式。
如果您不想使用 Genson,我真的建议您使用 Jackson 而不是 Gson。