Kotlin Jackson Mapper 中的 TypeReference 错误

Error in TypeReference in Kotlin Jackson Mapper

我得到了以下数据class

data class MyResponse<T>(val header: String,
                     val body: T)

我想编写一个通用的 Kotlin 函数,可以将 json 反序列化为各种 MyResponse<SimpleBody>MyResponse<ComplexBody>

class JsonSerialiser {   

    val mapper = jacksonObjectMapper()
    fun <T> fromJson(message: String, classz: Class<T>): T {
        return mapper.readValue(message, classz)
    }
}
val response: MyResponse<SimpleBody> = jsonSerialiser.fromJson("""{"header":"myheader", "body":{"simpleBody":{"name": "A"}}}""", MyResponse::class.java)

data class SimpleBody(val name: String)

编译失败并显示此错误消息

Kotlin: Type inference failed. Expected type mismatch: inferred type is MyResponse<*> but MyResponse<SimpleBody> was expected

有人知道我怎样才能让它工作吗?我可以使用 MyResponse<*> 然后投射它,但我觉得那不是正确的方法。

感谢和问候 锡

您不需要这个,只需使用 com.fasterxml.jackson.module.kotlin.readValue:

val response: MyResponse<SimpleBody> = jacksonObjectMapper().readValue("""{"header":"myheader", "body":{"name": "A"}}""")

请注意,我稍微更改了 json 以便 Jackson 无需进一步修改即可解析它