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

如何用Gson与Kotlin解析含重复键的JSON?获取嵌套y字段值

解决Gson+Kotlin解析嵌套重复字段JSON的问题

这个问题我之前也碰到过,核心是你把外层y的类型搞错啦!你的JSON结构里,外层的y根本不是字符串,而是一个嵌套的JSON对象,直接定义成String?自然拿不到里面的y字段。

正确的实体类定义

你需要用两层数据类来对应这个嵌套结构,把层级关系理清楚:

import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName

data class OuterData(
    @Expose
    @SerializedName("y")
    val innerData: InnerData? // 外层的y对应这个嵌套对象
)

data class InnerData(
    @Expose
    @SerializedName("x")
    val x: String?,
    
    @Expose
    @SerializedName("y")
    val y: String? // 这里就是你要的嵌套y字段
)

解析代码示例

用Gson解析时,把JSON字符串转换成OuterData对象,就能轻松获取嵌套的y字段了:

import com.google.gson.GsonBuilder

fun main() {
    val jsonStr = """{"y": {"x":"value", "y":"value"}}"""
    
    // 如果用到了@Expose,记得开启排除未标注字段的配置
    val gson = GsonBuilder()
        .excludeFieldsWithoutExposeAnnotation()
        .create()
    
    val outerData = gson.fromJson(jsonStr, OuterData::class.java)
    
    // 获取嵌套的y字段值
    val nestedYValue = outerData.innerData?.y
    println(nestedYValue) // 输出: value
}

关键提醒

  • 一定要注意JSON的层级:外层y是对象类型,必须用对应的数据类接收,不能直接用字符串
  • 只要实体类的层级和JSON结构完全对应,Gson就能自动把嵌套字段映射到对应的属性上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:17:10