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

Retrofit @GET请求返回变量为null但NewsAPI后台显示请求成功如何解决

问题根因及修复方案

  • 核心问题是你的自定义响应类字段和News API的实际返回结构不匹配:News API /v2/everything 接口返回的文章列表字段名为articles,你写的results字段在返回结果中不存在,序列化工具找不到对应字段自然会赋值为null。
  • 其他可能导致全null的常见原因:未配置正确的Retrofit响应转换器、实体类未添加正确的序列化注解、混淆规则未豁免实体类。

具体修复步骤

  1. 修正NewsResponse字段映射
    你可以直接修改字段名和API返回一致,也可以通过序列化注解做字段映射:
// 方案1:直接对齐API字段名(推荐,代码更简洁)
data class NewsResponse (
    val articles: List<NewsArticle>
)

// 方案2:保留原有字段名,加SerializedName注解(Gson场景)
import com.google.gson.annotations.SerializedName
data class NewsResponse (
    @SerializedName("articles")
    val results: List<NewsArticle>
)
  1. 检查NewsArticle类的所有字段也要和API返回的文章结构字段一一对应,名称不一致的同样要加序列化注解映射。
  2. 确认Retrofit初始化时添加了对应响应转换器,示例(Gson场景):
val retrofit = Retrofit.Builder()
    .baseUrl(NewsApi.BASE_URL)
    .addConverterFactory(GsonConverterFactory.create()) // 不能缺少这行
    .build()
  1. 若项目开启了混淆,需要将所有网络请求实体类加入混淆豁免规则,避免混淆后字段名被篡改导致解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:03