如何在Kotlin中获取JSON对象里[data][a]对应的数值3
获取JSON中[data][a]的值的Kotlin代码修改方案
方案一:直接处理嵌套Map
var map: Map<String, Any> = HashMap() map = Gson().fromJson(jsonData, map.javaClass) // 取出嵌套的data Map并强转,再获取a的值 val dataMap = map["data"] as Map<String, String> val aValue = dataMap["a"] Log.i("Login", aValue ?: "未获取到a的值")
方案二:安全类型判断(推荐)
如果担心JSON格式异常导致强转崩溃,可采用更稳妥的类型校验方式:
var map: Map<String, Any> = HashMap() map = Gson().fromJson(jsonData, map.javaClass) // 先校验data的类型是否为Map when (val dataObj = map["data"]) { is Map<*, *> -> { // 安全获取a的值,避免类型转换异常 val aValue = dataObj["a"] as? String Log.i("Login", aValue ?: "未获取到a的值") } else -> { Log.e("Login", "data字段格式不正确或不存在") } }
核心说明
- JSON里的
data是嵌套对象,Gson会将其解析为Map类型,因此需要从顶层Map中取出后再处理内部字段。 - 方案二通过
is类型判断和as?安全强转,能有效避免因JSON格式不符合预期导致的崩溃,更适合生产环境。
内容的提问来源于stack exchange,提问作者2mecode
相关产品推荐
相关产品推荐

