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

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

import com.fasterxml.jackson.annotation.JsonProperty import java.time.MonthDay data class DataView(val id: String, @get:JsonProperty("dayOfMonth") val monthDay: MonthDay) {} 

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

我知道注释是正确的,根据这个讨论kotlinlang.org 。

就我所知,我没有任何应该影响这个的配置。

pom包含:

 ...  spring-boot-starter-parent org.springframework.boot 1.5.6.RELEASE   ...  com.fasterxml.jackson.module jackson-module-kotlin ${jackson.version}   com.fasterxml.jackson.datatype jackson-datatype-hibernate5   com.fasterxml.jackson.datatype jackson-datatype-hppc   com.fasterxml.jackson.datatype jackson-datatype-jsr310   com.fasterxml.jackson.datatype jackson-datatype-json-org   com.fasterxml.jackson.module jackson-module-afterburner  ... 

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

 data class DataView(val id: String, @get:JsonProperty("dayOfMonth") val monthDay: MonthDay) data class MonthDay(val day: Int) fun main(args: Array) { val objectMapper = ObjectMapper() .registerKotlinModule() val dataView = DataView("someId", MonthDay(1)) //{"id":"someId","dayOfMonth":{"day":1}} println(objectMapper.writeValueAsString(dataView)) } 

即使我删除registerKotlinModule并从@get更改为@get@field