在发送给客户之前将json注释掉

时间:2010-12-05 14:52:07

标签: java spring rest jackson

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

2 个答案:

答案 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有办法装饰响应,因为这可能更容易实现。