我正在使用带有jackson 2.6.2的spring-boot 1.2.1.RELEASE,包括jsr310数据类型。我正在使用注释@SpringBootApplication启动我的Spring应用程序。我有
spring.jackson.serialization.write_dates_as_timestamps = false
在我的application.properties中设置(我知道正在阅读,因为我测试了banner = false)。
然而java.time.LocalDate仍被序列化为整数数组。我没有使用@EnableWebMvc。
看起来我是否添加了标签
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
到我的LocalDate变量然后它工作。但我认为它是自动的,具有上述属性集。另外,如果我没记错的话(我刚刚决定使用整数数组),那只能用于序列化而不是反序列化(但我真的很清楚,如果最后一部分是真的那么)。
答案 0 :(得分:5)
这是Spring Boot中的know issue。你需要手动完成。
angular.module('app')
.directive('time', ['timeUtil', 'timeEpoch', '$interval', function(timeUtil, timeEpoch, $interval) {
return {
restrict: 'A',
scope: { date: '@' },
link: function(scope, element) {
$interval(function() {
var diff = timeEpoch.diff(scope.date); // calculate some time
return element.text(timeUtil.dhms(diff)); // return formatted date to countdown
}, 1000);
}
}
}])
或更新至1.2.2。
<强>更新强>
弹簧也会从容器中使用way to configure ObjectMapper
。
答案 1 :(得分:1)
我遇到了同样的问题,LocalDateTime
被序列化为像[2019,10,14,15,7,6,31000000]
这样的整数数组。我拥有的春季引导版本是1.5.13.RELEASE
。我必须在用于解决此问题的JavaTimeModule
上注册ObjectMapper
。以下是为我工作的ObjectMapper
配置:
@Bean
public ObjectMapper getObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.registerModule(new JavaTimeModule());
return mapper;
}
答案 2 :(得分:0)
这个问题以奇怪的方式发生在我身上......使用不同的弹簧配置文件,其中一个返回了一个整数数组,另一个返回了预期的结果(年 - 月 - 日)。
在审核了我的配置后,问题是我的班级中缺少@Configuration
和(可能)@Primary
...这不能解释为什么可以在不同的配置文件中工作,但这跟随设置解决了我的问题:
@Configuration
public class WebConfigurer {
@Bean
@Primary
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.build();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
return objectMapper;
}
}
当然,你仍然需要在pom.xml中使用JSR 310的依赖项。