Kotlin数据类到JSON与spring/jackson

我试图公开一些数据类作为JSON对象,但有些不工作。

我有以下数据类:

data class Link( @JsonProperty("rel") @JsonView(View.Bind::class) val rel: String, @JsonProperty("method") @JsonView(View.Bind::class) val method: HttpMethod, @JsonProperty("href") @JsonView(View.Bind::class) val href: String) data class MetaData(val status: HttpStatus) { @JsonView(View.Bind::class) @JsonProperty("status_code") fun getStatusCode(): Int { return status.value() } @JsonView(View.Bind::class) @JsonProperty("status_desc") fun getStatusDesc(): String { return status.name } } data class Payload( @JsonView(View.Bind::class) @JsonProperty("payload") val payload: Any, @JsonProperty("_meta") @JsonView(View.Bind::class) val metaData: MetaData, @JsonProperty("_links") @JsonView(View.Bind::class) val links: List) 

由于某种原因,当Payload类是一个JAVA类时,一切正常,但是当它是一个kotlin类时,只有有效载荷元素进入JSON。

对于依赖我使用:

  org.jetbrains.kotlin kotlin-stdlib 1.0.1-1   com.fasterxml.jackson.module jackson-module-kotlin 2.7.1-2  

如果我将“_meta”和“_links”更改为“meta”和“links”,则会显示“links”元素。

我不得不使用下面的依赖关系组合

   com.fasterxml.jackson.core jackson-core 2.7.3   com.fasterxml.jackson.core jackson-annotations 2.7.3   com.fasterxml.jackson.core jackson-databind 2.7.3   com.fasterxml.jackson.module jackson-module-kotlin 2.7.3  

从2.7.1-2到2.7.3的更新formsjackson-module-kotlin在这个问题上几乎没有任何jackson-module-kotlin ,但我有义务包括jackson-corejackson-annotationsjackson-databind

另外jackson-module-kotlin包含的jacksonjar有一些问题spring-webmvc阻止我注册kotlin模块,如下所示

                 

最后, @JsonProperty _工作得很好。

根据您提供的信息,问题似乎与使用_作为JsonProperty value 。 您可能已经观察到所有的MetaData属性都包含_ 。 尝试删除所有的下划线,看看。 我也希望你已经注册了你的Application classObjectMapper例子:

 @Bean open fun objectMapperBuilder(): Jackson2ObjectMapperBuilder = Jackson2ObjectMapperBuilder().modulesToInstall(KotlinModule())