Spring 启动 2 未序列化 LocalDateTime

Spring Boot 2 not serializing LocalDateTime

我最近尝试使用spring-boot 2 实现一个微服务。

现在,每当我尝试从我的 REST 服务 return 一个包含 java.time.LocalDateTime 的对象时,LocalDateTime 就会被序列化为一个整数数组。像这样:

{
  "id": "5bf1425f9f8de267f04b22ad",
  "description": "aaaaaarrrgggghhhhh",
  "timestamp": [
    2018,
    11,
    18,
    11,
    43,
    43,
    889000000
  ],
  "time": 2.25,
  ...
}

我已经尝试通过 application.yml

中的设置配置 ObjectMapper
spring:
  jackson:
    serialization:
      write-dates-as-timestamps: false

但不起作用。我还尝试通过 Spring 配置 class 配置新的 ObjectMapper,如下所示:

@Configuration
public class JacksonConfig {
  @Bean
  @Primary
  public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    final ObjectMapper objectMapper = builder.build();
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    return objectMapper;
  }
}

我的配置已加载(调试器在断点处停止)- 只是它什么都不做。

我尝试手动添加 jackson 依赖项(也用于 jsr310 模块)到我的 pom.xml - 也没有任何运气。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
</dependency>

出于某种原因,它看起来像 Spring Boot 忽略了我对 ObjectMapper 的任何尝试,并且它保持 returning 相同的结果。

application.yml 中将 com.fasterxml 的日志级别设置为 DEBUG 也不会产生任何输出:

logging:
  level:
    com.fasterxml: DEBUG

我使用 Spring Boot 2.1.0-RELEASE 和 Jackson 2.9.7。

基本 pom 文件是从 https://start.spring.io 我的项目编译并在 Java 8 JVM 上运行的。

您必须为 jackson 添加 jsr310 支持:

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.4.0</version>
</dependency>

此答案基于 teppic 对原文的评论 post。

问题是由我的一个@Configuration 类 上的@EnableWebMVC 引起的。删除@EnableWebMVC 立即解决问题。

根据您的评论,我发现了您将 @EnableWebMvc 与 sprongboot 混合时的问题。事实证明,Spring Boot 不能与标准 Spring MVC @EnableWebMvc 很好地融合。当您添加注释时会发生什么 spring 引导自动配置被禁用。