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
相关产品推荐
相关产品推荐

