У меня есть простой класс событий, который содержит такие атрибуты, как отметка времени и причина.Причиной является любое исключение, которое содержится в классе как Throwable
.Когда я выполняю вызов REST для извлечения такого события из удаленного приложения, оно принимается как JSON и затем преобразуется обратно в событие.К сожалению, информация о типе исключения теряется, т.е.после восстановления это Throwable
, а не исходный подкласс.Есть ли способ сохранить эту информацию?
Вот мой класс событий:
public class Event {
long timestamp;
String name;
Throwable cause;
...
}
Вот мой REST Controller (с использованием 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
.Таким образом, информация о типе теряется.Есть ли способ сохранить его?