SpringBoot + Jackson + Kotlin数据类:忽略字段注释

时间:2017-12-06 13:30:37

标签: spring-boot jackson kotlin

我使用Spring Boot和Kotlin以及Java8时间。不知何故,数据类字段上的Jackson注释将被忽略。

import com.fasterxml.jackson.annotation.JsonProperty
import java.time.MonthDay

data class DataView(val id: String,
                    @get:JsonProperty("dayOfMonth") val monthDay: MonthDay) {}

为什么会忽略这些注释?响应仍包含字段名称" monthDay"。

根据https://github.com/angular/angular-cli/issues/2377的讨论,我知道注释是正确的。

据我所知,我没有任何可能会对此产生影响的配置。

pom包含:

...
<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>1.5.6.RELEASE</version>
    <relativePath/>
</parent>
...
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-kotlin</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-hibernate5</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-hppc</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-json-org</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-afterburner</artifactId>
    </dependency>
...

1 个答案:

答案 0 :(得分:0)

很奇怪。我检查这个代码本地,看起来都很好

registerKotlinModule

即使我删除@get并从@field更改为pid,它仍然有效。