मुझे redis से वस्तुओं को सहेजने और लोड करने की आवश्यकता है।जैक्सन वसंत के इंटरफ़ेस की सूची के साथ deserialize ऑब्जेक्ट
वस्तु (अन्य बातों के अलावा) GrantedAuthority की सूची होती है जो एक अंतरफलक है:
public class UserAccountAuthentication implements Authentication {
private List<GrantedAuthority> authorities;
private boolean authenticated = true;
...
}
जैक्सन सफलतापूर्वक वस्तु को धारावाहिक लेकिन निम्न अपवादों के साथ यह deserialize करने में विफल रहता:
abstract types can only be instantiated with additional type information
मैं पता है कि मैं जोड़कर टाइप निर्दिष्ट कर सकता हूं:
@JsonTypeInfo(
बी क्योंकि मैं इस मामले में ऐसा नहीं कर सकता क्योंकि GrantedAuthority
वसंत का एक इंटरफेस है और मैं इसे बदल नहीं सकता।
धारावाहिक 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);
और फिर भी प्रयास विफल।
आप देखा यदि आपके getters और setters ठीक से लिखे गए हैं? –
कोई गेटर्स नहीं हैं और यह एक निजी सूची है जो ऑब्जेक्ट आंतरिक रूप से काम करता है। – Mike