У меня есть следующий класс Log:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
public class Log {
private Timestamp creationTime;
}
У меня есть другой класс, унаследованный от Log следующим образом:
@JsonTypeName("LoginLog")
public class LoginLog extends Log {
private String username;
}
Есть также некоторые другие классы, такие как LoginLog
которые наследуются от Log.
Мой Spring Boot контроллер для сущностей Log выглядит следующим образом:
@RestController
@RequestMapping("/log")
public class LogController {
@GetMapping("last/five/log")
public List<Log> lastFiveLog() {
return logService.lastFiveLog();
}
@PostMapping("search/{page}/{size}")
public Page<Log> search(@RequestBody LogFilter logFilter, @PathVariable Integer page, @PathVariable Integer size) {
return logService.search(logFilter, page, size);
}
}
, когда я отправляю запрос в службу lastFiveLog RESTful, я получаю ответ, подобный этому:
[
{
"@type": "LoginLog",
"creationTime": 123192837419,
"username": "admin"
}
]
но результат поиска службы RESTful похож на этот и не содержит свойства @type в объекте результата.
{
"content": [
{
"creationTime": 123192837419,
"username": "admin"
}
],
"totalElements": 1,
"first": true,
"last": true,
...
}
, поэтому я не могу десериализовать ответ, потому что Джексон не может выяснить, чтоОбъект это экземпляр дочерних классов.Есть ли способ изменить ответ метода поиска, например lastFiveLog, и добавить информацию о типе к объектам списка содержимого?