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

如何通过Kotlin @SerializedName获取JSON嵌套的rendered字段值?

解决方案

要正确解析嵌套在title和content里的rendered字段,你需要针对JSON的嵌套结构定义对应的数据类,而非直接映射为String类型。具体操作如下:

1. 定义嵌套结构的数据类

先创建适配嵌套对象的类,用来接收rendered字段(content还包含protected字段,可按需保留):

// 通用类,同时适配title和content的结构
data class RenderedText(
    @SerializedName("rendered")
    val rendered: String?,
    @SerializedName("protected")
    val isProtected: Boolean? = null // 给默认值,避免title解析时出错
)

如果title和content的结构差异明显,也可以分开定义两个类:

data class TitleData(
    @SerializedName("rendered")
    val rendered: String?
)

data class ContentData(
    @SerializedName("rendered")
    val rendered: String?,
    @SerializedName("protected")
    val isProtected: Boolean?
)

2. 修改主数据类Icerik

将原来的baslik和icerik字段类型从String?替换为上面定义的嵌套类:

data class Icerik(
    @SerializedName("title")
    val baslik: RenderedText?, // 若分开定义则用TitleData?
    @SerializedName("content")
    val icerik: RenderedText?, // 若分开定义则用ContentData?
    @SerializedName("date")
    val tarih: String?,
    @SerializedName("jetpack_featured_media_url")
    val gorsel: String?
)

3. 获取rendered字段值

解析完成后,通过嵌套类的属性直接提取目标值:

// 获取标题的rendered内容
val titleText = icerikItem.baslik?.rendered
// 获取内容的rendered内容
val contentText = icerikItem.icerik?.rendered

原理说明

原数据类直接将title、content映射为String类型,但JSON中这两个字段是对象类型而非字符串,会导致解析失败或无法读取嵌套字段。通过定义匹配嵌套结构的数据类,序列化库(如Gson)才能正确解析层级关系,提取出rendered字段的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:45:17