Gson嵌套类反序列化报错,求无需完整反序列化的简便解法
Gson嵌套类反序列化报错的快速解决办法
1. 修复字段/类的访问权限
报错核心是Gson无法访问目标字段,按以下步骤排查:
- 确保实体类为public:把
GsOrgIds、GsOrgIdsData、GsOrgIdsResult三个类都加上public修饰符,否则Gson的反射机制无法跨包访问类成员。 - JDK9+模块化项目需开放权限:如果用了
module-info.java,添加如下配置允许Gson反射访问你的模块:opens gsapi to com.google.gson; - 配置Gson宽松访问规则:创建Gson实例时,用
GsonBuilder规避权限限制(即使字段是public,也能解决部分环境下的反射问题):Gson gson = new GsonBuilder().create(); GsOrgIds value = gson.fromJson(response, GsOrgIds.class);
2. 处理isDefault的类型映射
JSON里isDefault是数字1/0,实体类是boolean类型,Gson默认会自动把1转成true、0转成false。如果出现解析异常,可添加@SerializedName注解明确字段映射:
import com.google.gson.annotations.SerializedName; public class GsOrgIdsResult { public long createTime; @SerializedName("isDefault") public boolean isDefault; public String description; public String organization; public int id; }
结论:无需自定义完整反序列化逻辑
只要解决上述权限和类型映射问题,Gson就能自动完成嵌套JSON到实体类的解析,完全不用编写复杂的自定义反序列化代码。
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

