如何通过REST调用传输异常并恢复其类型?

时间:2018-12-06 00:31:51

标签: java json rest spring-mvc jackson

我有一个简单的事件类,其中包含诸如时间戳记和原因之类的属性。原因是任何异常,并且作为Throwable保留在类中。当我进行REST调用以从远程应用程序检索此类事件时,该事件将作为JSON接收,然后转换回该事件。不幸的是,异常的类型信息丢失了。重构后,它是Throwable,而不是原始子类。有没有办法保留这些信息?

这是我的活动课:

public class Event {
    long timestamp;
    String name;
    Throwable cause;
    ...
}

这是我的REST控制器(使用Spring)

@Controller
public class EventController {
    @GetMapping(value="/event", produces={MediaType.APPLICATION_JSON_VALUE})
    public @ResponseBody Event event() {
        Event event = getEvent();
        return event;
    }
}

相应的JSON示例为:

{
     "timeStamp": 1543968220913,
     "name": "Fault",
     "cause": {
        "cause":null,
        "stackTrace": [{ ... }]
     },
     ...
}

例如,在远程站点上,cause可能是java.io.IOException。在将其接收为JSON并进行重构之后,cause现在是java.lang.Throwable。因此,类型信息会丢失。有办法保留它吗?

0 个答案:

没有答案