gpt4 book ai didi

java - Kotlin Jackson Mapper 将 String 反序列化为 HashMap 而不是类型

转载 作者:行者123 更新时间:2023-11-30 05:47:35 28 4
gpt4 key购买 nike

我定义了一个方法:

protected inline fun <reified T : Any> executeForEntity(httpUriRequest: HttpUriRequest): T {
return httpClient.execute(httpUriRequest) { response: HttpResponse ->
val status = response.statusLine.statusCode
if (status == 200) {
val content = EntityUtils.toString(response.entity)
// this is the Jackson default readValue()
objectMapper.readValue(content, T::class.java)
} else {
throw RuntimeException("Service error occurred, status=${response.statusLine.statusCode}, content=${EntityUtils.toString(response.entity)}")
}
}
}

我正在尝试:

val entities: List<Entity> = getForEntity("/api/v1/my-entities")

但是,Jackson 返回的不是实体列表,而是 HashMap 的 ArrayList?即使使用显式类型声明...这发生的事情相当奇怪?

使用 jackson kotlin 模块的扩展方法会使错误更加严重。这些用例不支持泛型吗?

最佳答案

您可以像这样使用TypeReference

objectMapper.readValue<T>(json, object : TypeReference<T>() {})

关于java - Kotlin Jackson Mapper 将 String 反序列化为 HashMap<String, Any> 而不是类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54577187/

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