Kotlin中如何获取Support对象?解决其值为null问题
Kotlin中解决Support对象为null的问题
核心原因
你的QuoteList数据类中support字段被定义为非空类型Support,但实际API返回的JSON里该字段可能为null或者不存在,导致Retrofit解析时出现空值问题。
解决方案
1. 将Support字段改为可空类型
修改数据类,把support的类型从Support改为Support?,这样Retrofit就能兼容API返回null的情况:
data class QuoteList( @SerializedName("data") val `data`: List<Datas>, @SerializedName("page") val page: Int, @SerializedName("per_page") val perPage: Int, @SerializedName("support") val support: Support?, // 改为可空类型 @SerializedName("total") val total: Int, @SerializedName("total_pages") val totalPages: Int ) data class Support( @SerializedName("text") val text: String, @SerializedName("url") val url: String )
2. 校验API返回字段一致性
确认后端返回的JSON中,support字段的键名是否和你@SerializedName注解的完全一致(大小写、拼写都要匹配),避免因字段名不匹配导致解析为null。
3. 业务代码中处理空值
在使用support对象时,通过空安全操作符处理可能的null情况:
// 方式1:使用let安全调用 quoteList.support?.let { support -> // 处理非空的support对象,比如获取text或url val supportText = support.text val supportUrl = support.url } // 方式2:使用 Elvis 运算符给默认值 val supportText = quoteList.support?.text ?: "默认支持文本"
内容的提问来源于stack exchange,提问作者Mahdi seyed mahdi
相关产品推荐
相关产品推荐

