Potrzebuję zapisać i załadować obiekty z Redis.jackson deserialize obiekt z listą interfejsu sprężyny
Obiekt zawiera listę GrantedAuthority (między innymi), który jest interfejsem:
public class UserAccountAuthentication implements Authentication {
private List<GrantedAuthority> authorities;
private boolean authenticated = true;
...
}
Jackson powodzeniem serializuje obiektu, ale nie deserializowania go z następującym wyjątkiem:
abstract types can only be instantiated with additional type information
I wiem, że mogę określić typ, dodając:
@JsonTypeInfo(
B ut Nie mogę tego zrobić w tym przypadku, ponieważ GrantedAuthority
jest interfejsem Spring i nie mogę go zmienić.
szeregowej json jest:
{
"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
}
abstrakcyjnej GrantedAuthority
został napełniony tylko SimpleGrantedAuthority
.
więc próbowałem:
objectMapper.registerSubtypes(SimpleGrantedAuthority.class);
i nadal nie ma szczęścia.
Widziałeś jeśli pobierające i ustawiające są napisane poprawnie? –
nie ma żadnych obiektów pobierających i ustawiających, jest to prywatna lista, z którą obiekt współpracuje wewnętrznie. – Mike