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

Java使用Gson实现对象深度序列化:自定义类字段未序列化如何解决

解决方法

问题核心有两个常见原因:一是Gson默认忽略值为null的字段,你代码中islandLocation初始值为null所以被过滤;二是SimpleLoc类不符合Gson序列化规则,可按以下步骤修复:

  • 第一步:开启Gson的null值序列化配置
    默认new Gson()创建的实例不会序列化值为null的字段,改用GsonBuilder构造实例并开启serializeNulls配置即可。Gson默认支持递归序列化所有符合规则的嵌套对象,无需手动编写每个字段的序列化逻辑,修改后的序列化方法如下:
    public String serialize() {
        Gson gson = new GsonBuilder()
                .serializeNulls() // 序列化null值字段
                .create();
        return gson.toJson(this);
    }
    
  • 第二步:检查SimpleLoc类的序列化合规性
    要确保SimpleLoc满足以下要求,否则即使字段赋值为非null也会序列化失败:
    1. 不能是非静态内部类,如果是定义在其他类内部的类,需要加static修饰,避免持有外部类引用导致序列化异常
    2. 保留可访问的无参构造方法,如果你手动写了带参构造,需要显式补充无参构造
    3. 类中需要序列化的字段不要加transient、static修饰符,否则会被Gson默认排除
  • 可选配置:如果后续需要排除特定字段的序列化,仅需要给对应字段加transient修饰即可,无需修改序列化逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:57:03