我有一个简单的事件类,其中包含诸如时间戳记和原因之类的属性。原因是任何异常,并且作为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
。因此,类型信息会丢失。有办法保留它吗?