Java8 对于LocalDateTime的序列化和反序列化

Posted 刘元涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8 对于LocalDateTime的序列化和反序列化相关的知识,希望对你有一定的参考价值。

这里以jackjson为例

配置反序列化工具

/**
 * 时间戳反序列化时间
 *
 * @author liuyuantao
 */
public class Str2LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> 

    private static final String STANDARD_PATTERN = "yyyy-MM-dd HH:mm:ss";

    @Override
    public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException 
        DateTimeFormatter formatterDateTime = DateTimeFormatter.ofPattern(STANDARD_PATTERN);
        String timeStr = jsonParser.getValueAsString();
        return LocalDateTime.parse(timeStr, formatterDateTime);
    

解决1:

配置全局日期格式化

@Configuration
public class WebMvcConfig implements WebMvcConfigurer 

    @Value("$spring.jackson.date-format:yyyy-MM-dd HH:mm:ss")
    private String pattern;

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() 
        return builder -> 
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
            //返回时间数据序列化
            builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
            //接收时间数据反序列化
            builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
        ;
    

解决2:

在LocalDateTime 实体类使用注解

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime issueDate;

以上是关于Java8 对于LocalDateTime的序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章

Java8 对于LocalDateTime的序列化和反序列化

Java8 对于LocalDateTime的序列化和反序列化

在将 json 反序列化为对象时,使用 jackson 将 asp.net / MS 专有 json Dateformat 转换为 java8 LocalDateTime

Spring Boot 问题使用 Jackson 序列化 java.time.LocalDateTime 以返回 ISO-8601 JSON 时间戳?

JAVA8 LocalDateTime

Java8 LocalDateTime 转时间戳 秒毫秒