You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gson反序列化Map列表时出现‘Not enough information to infer type variable T’错误求助

解决Gson反序列化List<Map<String, Any>>时的类型推断错误

你遇到的问题是Kotlin无法自动推断fromJson方法的泛型参数T——虽然你通过TypeToken指定了类型,但Java的Type对象和Kotlin的泛型系统无法直接完成自动映射,必须显式指定泛型类型。

方案一:显式指定变量类型

直接在变量声明时明确类型,让Kotlin推导出fromJson的泛型参数:

val listType = object : TypeToken<List<Map<String, Any>>>() {}.type
val stepsList: List<Map<String, Any>> = Gson().fromJson(resultStr, listType)

方案二:调用时显式指定泛型参数

调用fromJson时直接指定泛型类型,不依赖变量类型推断:

val listType = object : TypeToken<List<Map<String, Any>>>() {}.type
val stepsList = Gson().fromJson<List<Map<String, Any>>>(resultStr, listType)

方案三:使用内联reified扩展函数(更简洁)

如果觉得手动创建TypeToken麻烦,可以封装一个内联扩展函数,利用Kotlin的reified特性直接获取泛型类型:

inline fun <reified T> Gson.fromJson(json: String): T {
    return this.fromJson(json, object : TypeToken<T>() {}.type)
}

调用时直接指定泛型即可,无需手动创建TypeToken:

val stepsList = Gson().fromJson<List<Map<String, Any>>>(resultStr)

以上三种方式都能解决“Not enough information to infer type variable T”的错误,本质都是通过显式指定泛型类型,让Kotlin明确fromJson方法要返回的类型。

内容的提问来源于stack exchange,提问作者WeGoToMars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:05:05