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

Kotlin中如何从Gson生成的JSON列表提取值计算E、I变量?

解决方案

你有两种实现思路,优先推荐第一种,避免不必要的序列化/反序列化性能损耗:

方案1:直接处理原始maps集合(推荐)

你不需要把maps转成JSON再解析,直接遍历原始集合提取数值即可:

var E = 0
var I = 0

maps.values.forEach { value ->
    // 拆分E_xxx / I_xxx格式的字符串
    val parts = value.split("_")
    if (parts.size == 2) {
        val type = parts[0]
        val num = parts[1].toIntOrNull() ?: return@forEach
        when (type) {
            "E" -> E += num
            "I" -> I += num
        }
    }
}
// 运行完成后E、I就是你需要的求和结果

方案2:仅能拿到序列化后的JSON字符串dataOfTestToJson时使用

先把JSON反序列化为可遍历的集合再计算:

import com.google.gson.reflect.TypeToken

// 定义JSON对应的集合类型
val listType = object : TypeToken<List<Map<String, String>>>() {}.type
val list: List<Map<String, String>> = Gson().fromJson(dataOfTestToJson, listType)

var E = 0
var I = 0

list.forEach { item ->
    val value = item.values.first()
    val parts = value.split("_")
    if (parts.size == 2) {
        val num = parts[1].toIntOrNull() ?: return@forEach
        when (parts[0]) {
            "E" -> E += num
            "I" -> I += num
        }
    }
}

核心逻辑说明

  • 用split("_")把E_2这类格式的字符串拆成类型标识和数值两部分
  • 用toIntOrNull()做安全转换,避免字符串格式异常导致程序崩溃
  • 遍历过程中按类型累加数值就能得到你需要的E、I计算结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:18:01