在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
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。