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

Android Java中使用Gson解析JSON为UnitRes对象失败求助

问题排查与解决

以下是导致Gson解析失败的可能原因及对应解决方法:

1. 缺少无参构造函数

Gson通过反射实例化实体类时,依赖类的无参构造函数。如果UnitRes或Unit类定义了带参构造但未显式声明无参构造,Java不会自动生成默认无参构造,导致Gson无法实例化对象。

解决方法:给两个类都显式添加无参构造:

public class UnitRes{
    private List<Unit> units;
    private int success;
    private String loc;

    // 显式无参构造
    public UnitRes() {}

    // getters & setters
}

public class Unit{
    private int id;
    private String unit_name;
    private String created_at;
    private String updated_at;

    // 显式无参构造
    public Unit() {}

    // getters & setters
}

2. 解析时错误使用TypeToken

UnitRes是普通实体类,并非泛型集合类型,不需要使用TypeToken,直接传入UnitRes.class即可完成解析。错误的TypeToken使用可能引发解析逻辑异常。

修改解析代码:

Gson gson = new Gson();
UnitRes res = gson.fromJson(response, UnitRes.class);

3. 检查JSON字符串的有效性

确保response变量存储的是完整、格式正确的JSON字符串,没有多余的前缀、后缀或转义错误。可以先打印response内容,用本地JSON校验工具验证格式是否合规。

4. 混淆规则问题

如果项目开启了代码混淆,Gson会因为实体类字段名被混淆而无法匹配JSON键值对。需要在混淆配置文件(proguard-rules.pro)中添加规则,保留实体类的字段和结构:

# 替换为你的实体类实际包路径
-keep class com.your.package.UnitRes { *; }
-keep class com.your.package.Unit { *; }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:10:28