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);