如何将Volley返回的List<List<Int>>格式字符串响应转换为Kotlin列表对象
字符串转嵌套整数列表实现方案
你通过Volley拿到的"[[1, 2, 3], [4, 5, 6]]"是完全符合JSON格式的嵌套数组字符串,完全不需要手写逐字符切割、正则匹配的解析逻辑,用成熟的JSON工具就能零成本完成转换,以下是两种可直接落地的实现方式:
方案一:使用Kotlin官方序列化库kotlinx.serialization
这是Kotlin生态下类型安全最高、代码最简洁的实现,不会出现隐式类型转换异常。
- 提前在项目中引入kotlinx-serialization-json依赖即可
- 解析核心代码仅需一行:
val rawResponse = "[[1, 2, 3], [4, 5, 6]]" val convertedResult: List<List<Int>> = Json.decodeFromString(rawResponse)
提示:因为List<List<Int>>本身就是天然支持序列化的类型,不需要额外编写自定义的解析规则,工具会自动匹配嵌套结构完成转换。
方案二:使用Android内置的org.json工具
如果是Android项目,不需要额外引入第三方依赖,依靠系统自带的org.json库就能完成解析:
val rawResponse = "[[1, 2, 3], [4, 5, 6]]" val outerJsonArray = JSONArray(rawResponse) val finalList = mutableListOf<List<Int>>() // 遍历外层嵌套结构 for (outerIndex in 0 until outerJsonArray.length()) { val innerJsonArray = outerJsonArray.getJSONArray(outerIndex) val innerIntList = mutableListOf<Int>() // 遍历内层数组取出整数 for (innerIndex in 0 until innerJsonArray.length()) { innerIntList.add(innerJsonArray.getInt(innerIndex)) } finalList.add(innerIntList) }
避坑提醒:不要尝试手写字符串拆分逻辑(比如直接按括号、逗号拆分原始字符串),如果后续接口返回的内容包含带空格的数值、负整数、空数组等边界情况,手写拆分逻辑非常容易出现解析错误,维护成本极高。
内容的提问来源于stack exchange,提问作者Trude
相关产品推荐
相关产品推荐

