spring:从控制器返回JSON作为ModelAndVIew

Arj*_*jun 21 java spring json spring-mvc jackson

如何从Spring控制器返回JSON作为视图或ModelAndView?我对使用@ResponseBody注释不感兴趣.有没有其他方法这样做?

Sea*_*oyd 32

是的,您可以使用返回MappingJacksonJsonView或将其分配给ModelAndView对象mav.setView(new MappingJacksonJsonView()).

更新:在Spring 4中不推荐使用 MappingJacksonJsonView .您可能希望升级到MappingJackson2JsonView

  • 为了详细说明,您可以将MOdelAndView的视图名称设置为MappingJacksonJsonView的实例,以返回JSON对象来代替ModelAndView.一个例子如下:`ModelAndView mav = new ModelAndView(new MappingJacksonJsonView()); mav.addObject("key1","value1"); mav.addObject("key2","value2");`返回`mav`然后将输出格式的JSON对象:`{"key1":"value1","key2":"value2"}` (9认同)

Far*_*ker 0

您可以使用org.codehaus.jackson.map.ObjectMapper类将 json 字符串写入输出流。在控制器的方法中使用以下代码片段:

ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(outputStream, model);
outputStream.flush();
Run Code Online (Sandbox Code Playgroud)