是否可以在Spring和Jersey中返回xml或json?

时间:2012-05-09 20:23:50

标签: java spring jersey

与春季和平针织物进行一些比较。

如果方法可以同时返回xml或json,那就很奇怪。

也许默认为xml,但有一个可选的标志,它将返回json。

可能的?

2 个答案:

答案 0 :(得分:4)

你提到泽西岛,所以我假设你指的是REST实现。如果您的资源设置正确,Jersey会自动将您的内容序列化为XML和JSON。您只需为@Produces注释指明更广泛的媒体类型:

@GET
@Path("/somepath")
@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
public MyBean getData() ;

其中MyBean是适当的JAXB注释POJO。通过此资源端点定义,调用者可以通过Accept:标头指定他们想要的内容类型:

GET http://www.example.com/somepath
Accept: text/xml

答案 1 :(得分:0)

Spring提供了一个ContentNegotiatingViewResolver,旨在提供此功能。文档中的示例:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  <property name="mediaTypes">
    <map>
      <entry key="atom" value="application/atom+xml"/>
      <entry key="html" value="text/html"/>
      <entry key="json" value="application/json"/>
    </map>
  </property>
  <property name="viewResolvers">
    <list>
      <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
      </bean>
    </list>
  </property>
  <property name="defaultViews">
    <list>
      <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
    </list>
  </property>
</bean>

描述了在HTML和JSON之间切换,但是使用JAXB或其他一些XML序列化程序也可以轻松扩展以支持XML。进一步阅读:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-multiple-representations

我发布了一个使用XML和Jersey的例子,但我不熟悉Jersey的bean。