今天遇到一个问题需要记录一下
后端开发给了个接口,结果在成功和失败的情况下竟然返回的数据类型不一样
失败的情况:
{
"code": 202,
"desc": "格式有误",
"result": "核验失败",
"success": false
}
成功的情况:
{
"code": 200,
"desc": "成功",
"result": {
"mzt": "绿码"
},
"success": true
}
尴尬的事来了 在kotlin中泛型在使用的时候一定要声明类型,第一反应就是 那就用*啊 然后再用as呗 哦豁 报错了 java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
算了心里过程不说了 记录一下解决方案
if (it.code == AppConstant.RESPONSE_CODE_SUCCESS) {
val result = it.result as LinkedTreeMap<*, *>
if (result.containsKey("mzt")) {
val value = result["mzt"]
}
} else {
if (it.result is String) {
val value = it.result
}
}
这里顺便记录一下通过自定义Gson转换器参考
贴一下代码好了




本文记录了在Kotlin中遇到的一个问题:后端接口在成功和失败时返回了不同类型的响应数据,导致在处理时遇到困难。由于Kotlin泛型需要指定类型,直接使用通配符*并尝试as转换出现了错误。解决方案是通过自定义Gson转换器来处理这种特殊情况。
1157

被折叠的 条评论
为什么被折叠?



