gpt4 book ai didi

json - 使用 spring/jackson 将 Kotlin 数据类转换为 JSON

转载 作者:行者123 更新时间:2023-12-03 02:41:27 26 4
gpt4 key购买 nike

我试图将一些数据类公开为 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<Link>)

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

对于我正在使用的依赖:

<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.0.1-1</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.7.1-2</version>
</dependency>

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

最佳答案

根据您提供的信息,问题似乎在于使用 _ 作为 JsonProperty 值。您可能已经观察到 MetaData 的所有属性都包含 _。尝试删除所有下划线并查看。我还希望您已经在您的 Application 类 中注册了 ObjectMapper,例如:

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

关于json - 使用 spring/jackson 将 Kotlin 数据类转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36293570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com