我有一个Spring MVC控制器,它返回一个JSON字符串,我想将mimetype设置为application / json。我怎样才能做到这一点?
@RequestMapping(method=RequestMethod.GET, value="foo/bar") @ResponseBody public String fooBar(){ return myService.getJson(); }
业务对象已经可以作为JSON字符串使用,因此使用MappingJacksonJsonView不是我的解决方案。@ResponseBody是完美的,但如何设置模仿类型?
MappingJacksonJsonView
@ResponseBody
我会考虑重构服务以返回您的域对象而不是JSON字符串,并让Spring处理序列化(通过MappingJacksonHttpMessageConverter编写时的)。从Spring 3.1开始,实现看起来很整洁:
MappingJacksonHttpMessageConverter
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET value = "/foo/bar") @ResponseBody public Bar fooBar(){ return myService.getBar(); }
注释:
首先,<mvc:annotation-driven />或@EnableWebMvc必须添加到您的应用程序配置中。
<mvc:annotation-driven />
@EnableWebMvc
接下来,注释的Produces属性@RequestMapping用于指定响应的内容类型。因此,应将其设置为MediaType.APPLICATION_JSON_VALUE(或"application/json")。
@RequestMapping
"application/json"
最后,必须添加Jackson,以便Java和JSON之间的任何序列化和反序列化都将由Spring自动处理(Spring检测到Jackson依赖关系,并且MappingJacksonHttpMessageConverter将在后台进行)。