用于构建JSON REST API的Jersey / Jackson的更好替代方案?

时间:2012-02-29 17:07:25

标签: java json rest jersey jackson

我需要构建一个JSON-REST API的服务器端,我一直在和Jersey一起玩(使用它的JSON-POJO映射功能)。

问题在于,即使测试最简单的用例,也需要在SO上提出几个问题,并且需要进行相当多的搜索。简而言之,它不是一个非常流畅的API,比如JSoup,它似乎是一个工具,它来自一切都是XML的时代,然后它被改装为JSON。

例如,您可以在需要使用@XmlRootElement注释POJO对象的要求中看到这一点,即使我所做的一切都不涉及XML。

我想知道是否还有其他库,也许是最近的,我应该考虑一下这可能比泽西更容易使用?

7 个答案:

答案 0 :(得分:9)

Jersey可以使用Jackson将POJO序列化为JSON,而无需任何注释。您可以通过将JSONConfiguration.FEATURE_POJO_MAPPING属性设置为true来配置此项。

web.xml中,添加以下servlet init参数:

<init-param>
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
    <param-value>true</param-value>
</init-param>

See the Jersey documentation

答案 1 :(得分:4)

我强烈建议您使用JBoss RESTEasy作为REST API。我已经在几个项目中使用它,并发现设置起来很简单。如果您需要,它还可以很好地与Spring集成。

我使用了Jackson和Gson来支持RESTEasy的JSON,它非常简单。您所做的只是使用JAXB注释注释POJO并包含适当的库。

RESTEasy的另一个非常重要的部分是对多部分表单数据的良好支持。它们提供了一个@MultipartForm注释,允许您将多部分表单绑定到POJO而无需编写任何代码...工作光滑。

我建议不要使用Spring MVC for REST,因为它不符合JAX-RS。如果您决定在不久的将来切换到不同的实现,使用符合JAX-RS标准的接口可以提供更好的可移植性。

答案 2 :(得分:3)

将json转换为pojos:gsonjackson。对于Restful,我会使用springrestlet

答案 3 :(得分:2)

注意:我是EclipseLink JAXB (MOXy)负责人,是JAXB (JSR-222)专家组的成员,也是Jersey项目的撰稿人。

使用Jersey或任何JAX-RS项目,您可以使用MessageBodyReader / MessageBodyWriter来完全控制JSON绑定。下面是使用此机制将MOXy用作JSON提供程序的示例。

答案 4 :(得分:1)

这是一个偏见的答案,但我们一直在为我们所有的企业使用Snow&amp;社交应用程序,它非常轻量级,完全基于Guice,允许您将任何REST调用绑定到任何Java方法(由Guice管理的对象)。非常灵活和简单。

http://britesnow.com/snow

我是这个微框架的创建者,所以,我很乐意得到您的反馈。

答案 5 :(得分:0)

由于NimChimpsky mentioned restlet可以开箱即用。此外,如果您的客户端也是java,您可以将功能抽象到一个接口中,并使用客户端代理很容易地将其包装起来。本教程页面显示了如何执行我所提到的here

答案 6 :(得分:0)

您可以尝试JEST,它适用于OpenJPA