2017-12-06 10 views
0

私はKotlinとJava8の時間でSpringブートを使用しています。どうやら、データクラスフィールドのJackson注釈は無視されます。SpringBoot + Jackson + Kotlinデータクラス:フィールド注釈が無視されました

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

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

これらの注釈はなぜ無視されるのですか?応答には依然としてフィールド名 "monthDay"が含まれています。

discuss.kotlinlang.orgのこのディスカッションによれば、注釈が正しいことは知っています。

私が知る限り、これに影響を与える設定はありません。

ポンポンが含まれています

... 
<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> 
... 
+0

ダウン投票者は、なぜこれが良い質問ではないと感じるのかを説明しますか? –

答えて

0

非常に奇妙な。私は、このコードは、ローカルチェックし、すべてはそれは私が@field@getからregisterKotlinModuleや変更を削除した場合でも同様に機能し

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

data class MonthDay(val day: Int) 

fun main(args: Array<String>) { 
    val objectMapper = ObjectMapper() 
      .registerKotlinModule() 

    val dataView = DataView("someId", MonthDay(1)) 

    //{"id":"someId","dayOfMonth":{"day":1}} 
    println(objectMapper.writeValueAsString(dataView)) 
} 

正常に見えます。

+0

努力をいただきありがとうございます。私の場合、java.time.MonthDayを使用していますが、SpringブートとMappingJackson2HttpMessageConverterと関係があると思います。 –

+1

すべてのjackson-datatype *モジュールをプロジェクトから除外し、m.bをチェックすると役立つでしょう。空のプロジェクトで見られるように、すべて正常に動作しますので、Springで設定されているObjectMapperの問題です。 – kurt

関連する問題