[alibaba/fastjson]希望可以定义多个DateForamt,分别针对LocalDateTime、LocalDate、LocalTime

2025-11-03 360 views
2

目前 LocalDateTime、LocalDate 可以正常输出了,但 LocalTime 带毫秒。 通常我们会输出不带毫秒的LocalTime,所以请求修改默认的LocalTime,或者支持配置针对LocalTime的格式化。 我不想在类或格式化时单独对这一个属性进行配置,因为我在WebMvcConfig中会配置FastJsonMessageConvert,所以希望可以统一设置。

回答

8

"2018-05-20 00:50:41" "2018-05-20" "00:50:41.394"

4

LocalTime 序列化也有问题 LocalTime localTime = LocalTime.parse("09:00:00"); System.out.println(localTime);

会输出09:00, 但是我期望的是标准格式09:00:00 因为fastjson默认是走toString , 但是jdk的LocalTime 的toString如果秒不是大于0的就不会输出

9

目前 LocalDateTime、LocalDate 可以正常输出了,但 LocalTime 带毫秒。 通常我们会输出不带毫秒的LocalTime,所以请求修改默认的LocalTime,或者支持配置针对LocalTime的格式化。 我不想在类或格式化时单独对这一个属性进行配置,因为我在WebMvcConfig中会配置FastJsonMessageConvert,所以希望可以统一设置。

你可以这样配置 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.WriteDateUseDateFormat ); fastConverter.setFastJsonConfig(fastJsonConfig); fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");

或者单一使用 JSON.toJSONString(data, SerializerFeature.WriteDateUseDateFormat));

0

LocalTime 序列化也有问题 LocalTime localTime = LocalTime.parse("09:00:00"); System.out.println(localTime);

会输出09:00, 但是我期望的是标准格式09:00:00 因为fastjson默认是走toString , 但是jdk的LocalTime 的toString如果秒不是大于0的就不会输出

这个确实一个比较大的坑点,我最近也遇到了,稍后提一个merge request