2

只是和春天和球衣做一个小比较。

好奇一个方法是否可以同时返回 xml 或 json。

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

可能的?

4

2 回答 2

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
于 2012-05-09T20:32:36.200 回答
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。

于 2012-05-10T14:50:04.873 回答