在春季3控制器
@RequestMapping(value = "/employee/{id}", RequestMethod.GET)
public @ResponseBody Employee getEmployee(@PathVariable long empID) {
Employee employee = employeeService.getByID(empID);
return employee;
}
我应该修改哪个文件,以便json返回如下所示
而不是返回"['foo', 'bar']"
返回此"/*['foo', 'bar']*/"
(带评论)?
答案 0 :(得分:1)
在封面下,Spring MVC委托给HttpMessageConverter
来执行序列化。在这种情况下,Spring MVC调用基于 Jackson JSON处理器构建的MappingJacksonHttpMessageConverter
。当您使用 mvc:annotation-driven 配置元素并在类路径中显示 Jackson时,会自动启用此实现。
因此,您可以通过覆盖
来提供自己的HttpMessageConverter
实施
protected void writeInternal(Object o,
HttpOutputMessage outputMessage)
throws IOException,
HttpMessageNotWritableException
MappingJacksonHttpMessageConverter 的方法,可以达到目的。
答案 1 :(得分:1)
关于注释的快速说明:注释不是(唉!)JSON规范的一部分,因此使用它们意味着使用非标准JSON。
为了它的价值,可以让一些JSON解析器(包括Jackson)处理注释(对于Jackson,请参阅http://wiki.fasterxml.com/JacksonFeaturesParser);以及编写它们(需要使用'JsonGenerator.writeRaw(“/ ... /”)')。
但也许Spring有办法装饰响应,因为这可能更容易实现。