Kotlin enum Jackson序列化:java.lang.ClassNotFoundException:kotlin.reflect.KotlinReflectionInternalError

时间:2018-04-20 14:15:04

标签: enums kotlin jackson

我正在

  

抛出java.lang.ClassNotFoundException:   kotlin.reflect.KotlinReflectionInternalError

在我的spring引导休息端点中序列化包含以下枚举的类。

enum class Status private constructor(private val code: String) {
    ACTIVE("active"), PENDING("pending");

    companion object {
        fun fromString(value: String): Status {
            return when (value) {
                "active" -> ACTIVE
                "pending" -> PENDING
                else -> throw IllegalArgumentException("Not supported status $value")
            }
        }
    }
}

我试图将此枚举重写为Java,并且它可以正常工作。

P.S。:我的build.gradle

中有compile("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.+")依赖项

如何让杰克逊序列化kotlin的enum课程?

1 个答案:

答案 0 :(得分:0)

我认为您应该将@JsonCreator批注添加到随播广告的#fromString方法中,以告知Jackson必须使用它。而且我也没有看到@JsonValue注释。

enum class Status private constructor(@JsonValue val code: String) {
ACTIVE("active"), PENDING("pending");

companion object {

    @JsonCreator
    fun fromString(value: String): Status {
        return when (value) {
            "active" -> ACTIVE
            "pending" -> PENDING
            else -> throw IllegalArgumentException("Not supported status $value")
        }
    }
}
}