在从Redis获取带有LocalDateTime类型属性的对象时,产生序列化和反序列化问题解决办法
形式一:实体类上指定LocalDateTime的序列化器和反序列化器
@JsonDeserialize(using = LocalDateTimeDeserializer.class) //反序列化 @JsonSerialize(using = LocalDateTimeSerializer.class) //序列化 private LocalDateTime birthday;
形式二:在Redis的配置类中指明序列化的形式
@Configuration public class RedisConfig { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); /** * JSON序列化 */ Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper mapper = new ObjectMapper(); //勾销工夫转换格局,默认是工夫戳,同时须要设置要体现的工夫格局 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); mapper.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false); mapper.setDateFormat(new SimpleDateFormat("yyy-MM-dd HH:mm:ss")); //默认序列化没有实现,反序列化有实现 JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DATE_TIME_FORMATTER));// javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DATE_FORMATTER));// javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(TIME_FORMATTER)); mapper.registerModule(javaTimeModule); //设置时区 mapper.setTimeZone(TimeZone.getDefault()); //设置格式化输入// MAPPER.enable(SerializationFeature.INDENT_OUTPUT); //设置格式化输入 mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); serializer.setObjectMapper(mapper);// StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); template.setKeySerializer(serializer); template.setHashKeySerializer(serializer); template.setValueSerializer(serializer); template.setHashValueSerializer(serializer); return template; }}
Good Mai http://www.goodmai.com/