9

我正在使用 spring-boot 1.2.1.RELEASE 和 jackson 2.6.2,包括 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 变量然后它工作。但我认为上面的属性集是自动的。另外,如果我没记错的话(我刚刚决定使用整数数组),那只适用于序列化而不是反序列化(但老实说,我不太记得最后一部分是否属实)。

4

3 回答 3

9

这是Spring Boot 中的已知问题。您需要手动完成。

objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

或更新到 1.2.2。

更新: 还有一种方法可以从您的容器中配置ObjectMapperspring 使用的方法。

于 2015-10-06T03:58:17.823 回答
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;
  }
于 2019-10-15T05:40:54.283 回答
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 依赖项。

于 2017-12-22T15:36:15.187 回答