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-core
, jackson-annotations
和jackson-databind
。
另外jackson-module-kotlin
包含的jacksonjar有一些问题spring-webmvc
阻止我注册kotlin模块,如下所示
最后, @JsonProperty
_
工作得很好。
根据您提供的信息,问题似乎与使用_
作为JsonProperty value
。 您可能已经观察到所有的MetaData
属性都包含_
。 尝试删除所有的下划线,看看。 我也希望你已经注册了你的Application class
的ObjectMapper
例子:
@Bean open fun objectMapperBuilder(): Jackson2ObjectMapperBuilder = Jackson2ObjectMapperBuilder().modulesToInstall(KotlinModule())
- jackson,用私有字段和arg构造函数反序列化没有注释的类
- jackson@JsonIgnoreProperties多个字段与Kotlin
- 你如何声明一个使用Jackson XML的JsonTypeInfo.As.WRAPPER_OBJECT的多态字段?
- 自定义反序列化器在杰克逊的任何名单
- 基于科林地图的属性和jackson不工作 – 委托点不同的地图,即地图属性
- 如何使用jackson反序列化Kotlin集合
- SpringBoot + Jackson + Kotlin数据类:字段注释被忽略
- 将ByteArrayOutputStream转换为Kotlin中的json
- 在Kotlin中,Jackson数据类的反序列化错误