使用spring-mvc将异常序列化为JSON


问题内容

@RequestMapping(..)
@ResponseBody
public SearchResponse search(SearchRequest request) throws SearchException { .. }

我想返回给请求者:

  • 如果一切正常,JSON序列化的搜索响应
  • SearchException抛出JSON序列化的异常详细信息。

第一部分工作正常(在类路径上有Jackson <mvc:annotation-driven />),但是我看不到将异常序列化为json的简单方法。

我可以注册一个自定义处理程序,然后从那里编写一个JSON字符串,但是我可能还需要XML序列化,这意味着我将需要在处理程序中使用条件。还没有准备好吗?


问题答案:

这是起作用的方法:我接受了axtavt的建议(用注释@Component),并将此方法添加到控制器中:

@ExceptionHandler(CustomException.class)
public @ResponseBody CustomException handleException(CustomException ex) {
    return ex;
}