Джексон десериализует объект со списком интерфейса Spring
Мне нужно сохранить и загрузить объекты из Redis.
Объект содержит список GrantedAuthority (среди прочего), который является интерфейсом:
public class UserAccountAuthentication implements Authentication {
private List<GrantedAuthority> authorities;
private boolean authenticated = true;
...
}
Джексон успешно сериализует объект, но не может десериализовать его со следующим исключением:
abstract types can only be instantiated with additional type information
Я знаю, что могу указать тип, добавив:
@JsonTypeInfo(
Но я не могу сделать это в этом случае, потому чтоGrantedAuthority
это интерфейс Spring, и я не могу его изменить.
Серийный JSON это:
{
"authorities": [
{
"authority": "ROLE_NORMAL_USER"
}
],
"authenticated": true,
"securityToken": {
"expiration": 1458635906853,
"token": "sxKi3Pddfewl2rgpatVE7KiSR5qGmhpGl0spiHUTLAAW8zuoLFE0VLFYcfk72VLnli66fcVmb8aK9qFavyix3bOwgp1DRGtGacPI",
"roles": [
"ROLE_NORMAL_USER"
],
"expired": false,
"expirationDateFormatted": "2016-03-22 08:38:26.853 UTC"
},
"name": "admin",
"expired": false
}
абстрактныйGrantedAuthority
заполнен толькоSimpleGrantedAuthority
.
поэтому я попробовал:
objectMapper.registerSubtypes(SimpleGrantedAuthority.class);
и до сих пор не повезло.