0

在 Spring 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']*/" (带评论)?

4

2 回答 2

1

关于注释的快速说明:注释不是(唉!)JSON 规范的一部分,因此使用它们意味着使用非标准 JSON。

对于它的价值,可以让一些 JSON 解析器(包括 Jackson)处理注释(对于 Jackson,请参阅http://wiki.fasterxml.com/JacksonFeaturesParser);以及编写它们(需要使用'JsonGenerator.writeRaw(“/ ... /”)')。

但也许 Spring 有一种方法来装饰响应,因为这可能更容易实现。

于 2010-12-07T17:09:57.813 回答
1

在幕后,Spring MVC 委托给 aHttpMessageConverter来执行序列化。在这种情况下,Spring MVC 调用一个基于Jackson JSON 处理器MappingJacksonHttpMessageConverter的构建。当您使用mvc:annotation-driven配置元素和Jackson 存在于您的类路径中时,此实现会自动启用。

HttpMessageConverter 因此,您可以通过覆盖来提供自己的实现

protected void writeInternal(Object o,
                         HttpOutputMessage outputMessage)
                  throws IOException,
                         HttpMessageNotWritableException

MappingJacksonHttpMessageConverter的方法,可以达到目的。

于 2010-12-05T15:14:41.063 回答