通过Spring MappingJackson2JsonView返回一个JSONObject

时间:2015-11-05 18:22:33

标签: json spring spring-mvc jaxb

我有我的spring项目的xml和json输出视图。我正在使用spring 4版本,这是我的ViewResolver xml文件。

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  <property name="order" value="1" />
  <property name="mediaTypes">
    <map>
       <entry key="json" value="application/json" />
       <entry key="xml" value="application/xml" />
    </map>
  </property>

  <property name="defaultViews">
    <list>
      <!-- JSON View -->
      <bean
        class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
      </bean>

      <!-- JAXB XML View -->
      <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
        <constructor-arg>
            <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
               <property name="classesToBeBound">
                <list>    
                   <value>com.rest.dto.SportInfoDtoList</value>
                </list>
               </property>
            </bean>
        </constructor-arg>
      </bean>
     </list>
  </property>
  <property name="ignoreAcceptHeader" value="true" />

</bean> 

我想使用ModelAndView通过我的控制器传递Jackson JSONObject。

@RequestMapping(value="stat", method=RequestMethod.POST)
public ModelAndView getSeasonteamStat(@ModelAttribute(value="statDto") StatDto statDto){
    ModelAndView model = new ModelAndView();
    try{
        String seasonteamstatStr = GuideStatClient.getSeasonTeamStats();
        JSONObject seasonteamstat = new JSONObject(seasonteamstatStr);
        model.addObject("seasonteamstat", seasonteamstat);
        return model;
    } catch (Exception e){
        return model;
    }
}

如果我返回seasonteamstatStr,它将成功返回。但我需要将此字符串作为json对象传递。 This is a huge object so I dont want to map it into java objects using JAXB.

所以有没有办法将此字符串作为json传递。我试过jackson和gson JSONObject。提前致谢

1 个答案:

答案 0 :(得分:0)

使用@ResponseBody注释您的方法,指示方法返回值应绑定到Web响应正文并将返回类型更改为String