开发者社区> 问答> 正文

最新版本(2.0.8),LocalDate的缺省序列化格式为"yyyy-MM-dd",在spring

在springboot项目中,配置了fastjson2的转换器,但LocalDate的默认序列化格式还是为 "yyyy-MM-dd HH:mm:ss",请问是哪里配置出错了?

测试环境

JDK:OracleJdk-18.0.1.1 Springboot:2.7.1 Fastjson:2.0.8

预期效果

{ "localDate": "2022-06-28", "localDateTime": "2022-06-28 12:12:12", "localTime": "12:12:12" }

实际效果

{ "localDate": "2022-06-28 00:00:00", "localDateTime": "2022-06-28 10:33:43", "localTime": "1970-01-01 10:33:43" }

附件测试所有代码

WebMvcConfigurer接口实现配置代码如下

@Configuration public class WebMvcConfiguration implements WebMvcConfigurer {

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(0, new FastJsonHttpMessageConverter());
}

}

序列化对象代码如下

@Getter @Setter public class Model implements Serializable {

private static final long serialVersionUID = 6395971293856149015L;

private LocalDateTime localDateTime;
private LocalDate localDate;
private LocalTime localTime;

}

测试接口代码如下

@RestController @RequestMapping("/demo") public class DemoController {

@GetMapping
public Model demo() {
    Model model = new Model();
    model.setLocalDateTime(LocalDateTime.now());
    model.setLocalDate(LocalDate.now());
    model.setLocalTime(LocalTime.now());
    return model;
}

}

原提问者GitHub用户fanyawei

展开
收起
飘飘斯嘉丽 2023-04-21 11:31:41 282 0
1 条回答
写回答
取消 提交回答
  • FastJsonConfig 对全局的dateFormat设置了默认值"yyyy-MM-dd HH:mm:ss",可以设置为null或“”

    release note上有些歧义,目前对于localDateTime和localTime默认格式化是带毫秒位,可以使用@JSONField的format来满足您的场景。

    当前自定义序列化针对Localxxx的日期类型是不生效的,已经支持LocalDate/LocalTime/LocalDateTime自定义序列化,问请用新版本:https://github.com/alibaba/fastjson2/releases/tag/2.0.9

    原回答者GitHub用户wenshao

    2023-04-21 14:32:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多