使用GSON解析JSON时fssp字段未被填充返回null的原因及修复方案
问题原因与修复方案
可能的原因
- 缺少无参构造函数:
Fssp或FsspDTO类没有提供public的无参构造方法。Gson解析时需要通过无参构造实例化对象,如果缺失会导致对应字段无法赋值,最终返回null。 - 缺失getter/setter方法:你贴出的实体类代码只展示了字段定义,未提供对应字段的getter、setter方法。部分场景下Gson反射访问私有字段受限,需要通过get/set方法完成赋值。
- Gson配置与@Expose注解不匹配:如果你在构建Gson实例时使用了
excludeFieldsWithoutExposeAnnotation()配置,你当前的字段已经加了@Expose注解是符合要求的,但如果反过来你生成实体类时@Expose的serialize/deserialize属性被设为false,也会导致字段被跳过解析。 - 待解析JSON内容不符:你传入解析的
stringJSON.get(2)可能不是你贴出的包含fssp字段的JSON片段,索引取值错误拿到了其他无fssp字段的内容也会导致该字段为null。 - Fssp类定义不完整:你贴出的
Fssp类代码末尾未闭合,若实际代码中类定义错误、字段拼写错误也会导致解析失败。
修复方案
- 给
Fssp和FsspDTO类都添加public无参构造函数,如果是用jsonschema2pojo生成,可以在生成配置中开启生成无参构造的选项。 - 为所有字段添加对应的getter、setter方法,jsonschema2pojo默认生成的实体类是自带get/set的,如果你手动删除了可以补回,或者在IDE中用快捷键自动生成。
- 先打印确认待解析的JSON内容是否正确:
System.out.println("待解析JSON内容:" + stringJSON.get(2));
- 如果使用了GsonBuilder自定义配置,确保没有添加过滤
fssp字段的规则,如果你需要让@Expose注解生效,构建Gson的代码改为:
Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() .create();
- 检查
Fssp类的完整定义,确保类正常闭合,所有注解拼写正确,没有语法错误。
内容的提问来源于stack exchange,提问作者Buba
相关产品推荐
相关产品推荐

