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

Java中Gson反序列化返回全Null值问题求助

解决Gson反序列化JSON后所有字段为null的问题

遇到这种全字段为null的情况,通常是几个常见细节没处理好,我给你逐一排查解决:

1. 实体类字段和JSON键必须匹配(或用注解映射)

首先要确保你的实体类字段名和JSON里的键完全一致,或者用@SerializedName注解做映射。比如针对你的JSON结构,正确的实体类应该是这样:

public class AdEntity {
    private String cpm;
    private int id;
    private String name;
    private String startDate;

    // 重点!必须要有公共无参构造函数,Gson靠它实例化对象
    public AdEntity() {}

    // 可选但建议:添加getter/setter方法(如果字段是private的话)
    public String getCpm() { return cpm; }
    public void setCpm(String cpm) { this.cpm = cpm; }
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getStartDate() { return startDate; }
    public void setStartDate(String startDate) { this.startDate = startDate; }
}

如果你的实体类字段名和JSON键不一样(比如把startDate写成start_date),就用注解指定映射关系:

@SerializedName("startDate")
private String start_date;

2. 确保完整读取了整个JSON字符串

你的代码里用了StringBuilder但没写完,一定要把输入流的所有内容拼接完整,否则Gson解析不完整的JSON会导致结果异常。正确的读取代码应该是:

Gson g = new Gson();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder responseBuilder = new StringBuilder();

// 循环读取每一行,直到流结束
while ((inputLine = in.readLine()) != null) {
    responseBuilder.append(inputLine);
}
in.close(); // 记得关闭流,避免资源泄漏

// 把拼接好的字符串转成实体类列表
List<AdEntity> adList = g.fromJson(responseBuilder.toString(), new TypeToken<List<AdEntity>>(){}.getType());

3. 反序列化时要指定正确的泛型类型

因为你的JSON是一个数组结构,不能直接用AdEntity.class来解析,必须用TypeToken来获取List<AdEntity>的泛型类型,否则Gson无法识别数组,会导致解析出的对象全为null或者类型不匹配的错误。

4. 检查实体类是否有公共无参构造函数

如果你的实体类只写了带参数的构造函数,没有显式声明无参构造函数,Gson没办法创建对象实例,自然所有字段都是null。所以一定要加上公共的无参构造函数(如果你的类没有任何构造函数,Java会默认生成,但只要有带参构造,就必须显式写无参的)。

5. 验证读取到的JSON是否完整正确

可以在解析前把读取到的JSON字符串打印出来,确认它和你给出的示例完全一致,没有语法错误(比如引号缺失、逗号错误等):

System.out.println("读取到的JSON:" + responseBuilder.toString());

按照上面的步骤逐一排查,应该就能解决反序列化后字段全为null的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:42