java8中java.time.LocalDateTime的json格式化

本文介绍了在Spring Boot项目中,如何利用java.time.LocalDateTime进行JSON格式化。首先,需在构建工具配置文件中添加jackson-datatype-jsr310依赖。接着,通过在实体类的LocalDateTime属性上添加@JsonFormat注解实现序列化和反序列化。最后,为了使Spring MVC能自动将接收到的字符串转换为LocalDateTime,需注册一个日期格式化的Bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例项目为spring boot构建

 

步骤1:在gradle或者maven中添加 jackson-datatype-jsr310 依赖库

 

例如gradle: 

compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'

 

步骤2:

在实体类属性上加注解 @JsonFormat

com.fasterxml.jackson.annotation.JsonFormat;

 

到此为止已经可以将LocalDate、LocalTime、LocalDateTime等正确格式化并输出到view,但是如果要让Spring MVC接受到字符串自动转化为LocalDateTime类型的话还需以下一步操作。

 

步骤3:注册格式化日期的Bean

@Configuration
public class LocalDateTimeFormatConfig {

    @Bean
    public Formatter<LocalDate> localDateFormatter() {
        return new Formatter<LocalDate>() {
            @Override
            public String print(LocalDate object, Locale locale) {
                return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
            }

            @Override
            public LocalDate parse(String text, Locale locale) throws ParseException {
                return LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
            }
        };
    }

    @Bean
    public Formatter<LocalDateTime> localDateTimeFormatter() {
        return new Formatter<LocalDateTime>() {
            @Override
            public String print(LocalDateTime object, Locale locale) {
                return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            }

            @Override
            public LocalDateTime parse(String text, Locale locale) throws ParseException {
                return LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            }
        };
    }

    @Bean
    public Formatter<LocalTime> localTimeFormatter() {
        return new Formatter<LocalTime>() {
            @Override
            public String print(LocalTime object, Locale locale) {
                return object.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
            }

            @Override
            public LocalTime parse(String text, Locale locale) throws ParseException {
                return LocalTime.parse(text, DateTimeFormatter.ofPattern("HH:mm:ss"));
            }
        };
    }

}

 

 

这里用的是java config的写法,使用xml注册也是可以的。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值