Kotlin开发:Gson解析JSON遇Expected BEGIN_ARRAY异常求助
嘿,这个问题我之前也碰到过,典型的Gson解析类型不匹配问题!咱们一步步来解决:
问题根源
你遇到的JsonSyntaxException核心原因是:Gson预期解析一个数组(BEGIN_ARRAY,也就是[]),但实际拿到的JSON根节点是一个对象(BEGIN_OBJECT,也就是{})。你返回的JSON结构里,真正的数组是嵌套在Items字段里的,而根节点是包含Success、Message、Items的完整对象。
解决方案
1. 定义匹配JSON结构的数据类
你现有的MobileConfig应该对应Items里的单个配置项,但还需要一个根数据类来包裹整个JSON:
// 根数据类,完全对应返回的JSON整体结构 data class ConfigResponse( val Success: String, val Message: String, val Items: List<MobileConfig> ) // 对应Items数组里的每一条配置数据 data class MobileConfig( val Id: Int, val Name: String, val Value: String )
2. 用正确的类型解析JSON
之前你大概率写了类似这样的错误代码(直接把整个JSON当成数组解析):
// ❌ 错误示例:强行把对象解析成数组,触发异常 val configs = Gson().fromJson(jsonString, List<MobileConfig>::class.java)
现在改成解析成ConfigResponse类型,再从中取出数组:
// ✅ 正确解析方式 val gson = Gson() val configResponse = gson.fromJson(jsonString, ConfigResponse::class.java) // 拿到你需要的配置列表 val mobileConfigs = configResponse.Items
这样就能完美匹配JSON结构,异常自然就消失啦!
内容的提问来源于stack exchange,提问作者IntegratedDigitalSystems IDS
相关产品推荐
相关产品推荐

