sql >> データベース >  >> NoSQL >> Redis

jacksonは、Springのインターフェイスのリストを使用してオブジェクトを逆シリアル化します

    カスタムデシリアライザーを追加する必要があると思います

    public class UserAccountAuthenticationSerializer extends JsonDeserializer<UserAccountAuthentication> {
    
    @Override
    public UserAccountAuthentication deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
            throws IOException {
    
        UserAccountAuthentication userAccountAuthentication = new UserAccountAuthentication();
    
        ObjectCodec oc = jsonParser.getCodec();
        JsonNode node = oc.readTree(jsonParser);
        userAccountAuthentication.setAuthenticated(node.get("authenticated").booleanValue());
    
        Iterator<JsonNode> elements = node.get("authorities").elements();
        while (elements.hasNext()) {
            JsonNode next = elements.next();
            JsonNode authority = next.get("authority");
            userAccountAuthentication.getAuthorities().add(new SimpleGrantedAuthority(authority.asText()));
        }
        return userAccountAuthentication;
    }
    

    }

    これは私のjsonです

    {"authenticated":true,"authorities":[{"authority":"role1"},{"authority":"role2"}],"details":null,"principal":null,"credentials":null,"name":null}
    

    次に、POJOの上部に

    @JsonDeserialize(using = UserAccountAuthenticationSerializer.class)
    public class UserAccountAuthentication  implements Authentication {
    

    これがテストです

    @Test
    public void test1() throws IOException {
    
    UserAccountAuthentication userAccountAuthentication = new UserAccountAuthentication();
    userAccountAuthentication.setAuthenticated(true);
    userAccountAuthentication.getAuthorities().add(new SimpleGrantedAuthority("role1"));
    userAccountAuthentication.getAuthorities().add(new SimpleGrantedAuthority("role2"));
    
    String json1 = new ObjectMapper().writeValueAsString(userAccountAuthentication);
    UserAccountAuthentication readValue = new ObjectMapper().readValue(json1, UserAccountAuthentication.class);
    String json2 = new ObjectMapper().writeValueAsString(readValue);
    assertEquals(json1, json2);
    

    }




    1. MongoCollectionとDBCollectionjava

    2. マングーススキーマ参照と未定義のタイプ'ObjectID'

    3. laravelプライベートチャネルとlaravel-echo-serverでの認証の問題

    4. MongoDBドキュメント内の特殊文字を含む文字列を検索しています