2011-05-30 29 views
15

¿Cómo puedo devolver JSON desde el controlador de primavera como una vista o ModelAndView? No estoy interesado en usar la anotación @ResponseBody. ¿Hay otra manera de hacer esto?primavera: devolver JSON desde el controlador como ModelAndVIew

+0

Spring tiene 'ContentNegotiatingViewResolver', que puede devolver dinámicamente la vista" derecha "según el sufijo o el encabezado 'Aceptar'. [enlace] (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multiple-representations). Usted proporciona el modelo y la vista en 'ModelAndView', deje que Spring haga la resolución de la vista. – Hong

Respuesta

0

Puede usar la clase org.codehaus.jackson.map.ObjectMapper para escribir cadenas json en la secuencia de salida. Utilice el siguiente fragmento de código en el método de su controlador:

ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue(outputStream, model); 
outputStream.flush(); 
+0

Si su versión de Spring es lo suficientemente alta, el objeto MappingJacksonJsonView utiliza ObjectMapper de Jackson para serializar el modelo. Referencia http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/view/json/MappingJacksonJsonView.html –

27

Sí, se puede devolver un MappingJacksonJsonView o asignarlo a un objeto utilizando ModelAndViewmav.setView(new MappingJacksonJsonView()).

Actualización: En Spring 4 MappingJacksonJsonView es deprecated. Es posible que desee actualizar a MappingJackson2JsonView

+7

Para mayor detalle, puede establecer el nombre de vista de MOdelAndView en una instancia de MappingJacksonJsonView para devolver un objeto JSON en lugar de ModelAndView. Un ejemplo se vería así: 'ModelAndView mav = new ModelAndView (new MappingJacksonJsonView()); mav.addObject ("clave1", "valor1"); mav.addObject ("key2", "valor2"); ' Volviendo' mav' haría entonces la salida un objeto JSON de la forma: '{ "key1": "valor1", "key2": "valor2"} ' – JCoster22

+1

Actualización: utilicé [MappingJackson2JsonView] (http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/web/servlet/view/json/MappingJackson2JsonView.html) para el encima. – JCoster22

Cuestiones relacionadas