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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:06:40