SpringBoot使用spring-data-redis獲取json數據後,遍歷數據 java.util.LinkedHashMap cannot be cast to xxx異常

SpringBoot使用spring-data-redis獲取json數據後,遍歷數據 java.util.LinkedHashMap cannot be cast to xxx異常


配置如下

private Jackson2JsonRedisSerializer<Object> getJackson2JsonRedisSerializer() {
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer =
                new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        // 去掉各種@JsonSerialize註解的解析
        objectMapper.configure(MapperFeature.USE_ANNOTATIONS, false);
        // 只針對非空的值進行序列化
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        // 訪問類型
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        // 將類型序列化到屬性json字符串中
        //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
        // 對於找不到匹配屬性的時候忽略報錯
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        // 不包含任何屬性的bean也不報錯
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        return jackson2JsonRedisSerializer;
    }

使用比較簡單的方法解決,在從redis獲取數據後,將其轉換爲json,然後轉換回對象
如:

List<Tag> tags = ...
List<Tag> newTags = new JSONArray(tags).toList(Tag.class);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章