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

标签 json spring-mvc jackson kotlin data-class

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

相关文章:

java - 无法使用 Jackson 反序列化 ZonedDateTime

java - Lombok 未创建默认构造函数导致 jackson-databinding 失败

javascript - 如何在nodejs中比较两个字符串源和目标与全名

c++ - 将 json 文件转换为 json 对象会打乱对象的顺序

java - MVC 设计 - 我可以在 Controller 类中进行域模型验证吗?

java - Spring创建bean时出错FileNotFoundException

java - Jquery Ajax表单提交成功前如何刷新页面?

java - 如何序列化具有一个 json 字符串成员的 Java 对象

javascript - 如何将特定 HTML 文件引用到 JSON 文件中的特定数组

java - Jackson 在将 JSON 反序列化为 POJO 时抛出 "msg":"Unrecognized field\"numeratorType\"