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

Android应用JSON解析成功但数据显示为null问题求助

问题根源:字段名不匹配导致Gson解析失败

嘿,我立刻就发现了问题所在——你的EstablishmentData类字段名和返回的JSON键完全不对应,Gson没法把JSON里的数据映射到类的字段上,所以所有字段都变成了null。

看一下对比:

  • 你的EstablishmentData字段:estabName、estabType、estabAddress、estabImage
  • JSON返回的键:name、type、address、image

Gson默认是严格按照字段名和JSON键完全一致来解析的,两者不匹配时,Gson就会给字段赋值默认值(String类型就是null)。

两种解决方案

这里有两种简单的修复方式,你可以选一种适合你的:

方案1:用@SerializedName注解映射字段(推荐)

这是最灵活的方法,不用修改现有字段名,只需要给每个字段加上Gson的@SerializedName注解,指定对应的JSON键即可。

修改后的EstablishmentData.java代码:

import com.google.gson.annotations.SerializedName;
import java.io.Serializable;

public class EstablishmentData implements Serializable { 
    @SerializedName("name") // 对应JSON里的"name"键
    public String estabName; 
    @SerializedName("type") // 对应JSON里的"type"键
    public String estabType; 
    @SerializedName("address") // 对应JSON里的"address"键
    public String estabAddress; 
    @SerializedName("image") // 对应JSON里的"image"键
    public String estabImage; 
}

方案2:直接修改类字段名和JSON键一致

如果你不想用注解,也可以把EstablishmentData的字段名改成和JSON键完全相同:

public class EstablishmentData implements Serializable { 
    public String name; 
    public String type; 
    public String address; 
    public String image; 
}

注意:这种方法需要同步修改所有用到这些字段的地方,比如EstablishmentAdapter里的establishmentData.name、establishmentData.address等,确保所有引用都一致。

验证修复效果

修改完成后重新运行应用,你会发现Logcat里的Estab Adapter日志不再输出null,RecyclerView也能正常显示数据了。

另外,你可以在EstablishmentFragment的onResponse方法里加一句日志,提前确认解析结果:

if (!establishmentData.isEmpty()) {
    Log.d(TAG, "解析成功,第一个商家名称:" + establishmentData.get(0).estabName);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:45:36