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未能对Kotlin数据类进行反序列化
- 使用Retrofit2 + RxJava + Jackson重试202状态码
- 你如何声明一个使用Jackson XML的JsonTypeInfo.As.WRAPPER_OBJECT的多态字段?
- 在Kotlin中,为什么jackson在某些情况下未能解组未注释的对象,而不是在其他情况下
- Java / Kotlin:为什么Jackson解析日期与SimpleDateFormat不同?
- Jackson @JsonProperty注释用于kotlin数据类的使用
- 在Kotlin中,FasterXML / jackson循环引用,@JsonIdentityInfo和UnresolvedForwardReference异常
- 自定义反序列化器在杰克逊的任何名单
- POJO在kotlin中响应这个XML响应