Kotlin Jackson映射器中的TypeReference中的错误

时间:2018-08-21 11:59:20

标签: kotlin jackson kotlin-extension jackson-modules

我有以下数据类

<ImageBrush ImageSource="{Binding Source={x:Static vg:GlobalVariables.Logo}}" .../>

我想编写一个通用的Kotlin函数,该函数可以将json反序列化为各种data class MyResponse<T>(val header: String, val body: T) 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)

任何人都知道我如何使它工作?我可以使用MyResponse <*>然后进行投射,但我不认为这是正确的方法。

感谢与问候 锡

1 个答案:

答案 0 :(得分:0)

您不需要这个,只需使用val response: MyResponse<SimpleBody> = jacksonObjectMapper().readValue("""{"header":"myheader", "body":{"name": "A"}}""")

public async Task<ActionResult> Create([Bind(Include = nameof(Foo.Bar1)+","+nameof(Foo.Bar2)+","+nameof(Foo.Bar3))] Foo fooObj)

请注意,我对json进行了一些更改,以便Jackson可以对其进行解析而无需进一步修改