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

如何避免Lombok生成意外字段?(版本1.16.18)

问题:Lombok 1.16.18版本下如何避免生成额外的"good" JSON属性?

先看一下咱们遇到的场景:用Lombok的@Data注解定义了如下POJO:

@Data 
public class Student{ 
    private String userName; 
    private String id; 
    public boolean isGood(){ 
        return true;
    } 
}

当把这个类的实例转换为JSON后,结果里多了一个我们不需要的"good"属性:

{ 
    "userName" : "xxx", 
    "id" : "1234", 
    "good" : true 
}

出现这个问题的原因是:Lombok的@Data会把isGood()这类isXxx格式的方法识别为布尔属性的getter,而JSON序列化框架(比如Jackson)也会遵循这个规则,自动把它序列化为"good"字段。在Lombok 1.16.18版本下,有几个实用的解决办法:

  • 方法一:给方法加@JsonIgnore注解
    直接在isGood()方法上添加JSON序列化框架的忽略注解,比如Jackson的@JsonIgnore,这样序列化时就会跳过这个方法对应的属性:

    @Data 
    public class Student{ 
        private String userName; 
        private String id; 
        
        @JsonIgnore
        public boolean isGood(){ 
            return true;
        } 
    }
    
  • 方法二:用Lombok的@Getter(AccessLevel.NONE)注解
    告诉Lombok不要把这个方法当作属性的getter来处理,从根源上阻止它被纳入属性体系:

    @Data 
    public class Student{ 
        private String userName; 
        private String id; 
        
        @Getter(AccessLevel.NONE)
        public boolean isGood(){ 
            return true;
        } 
    }
    
  • 方法三:修改方法名,避开isXxx格式
    如果业务允许的话,把方法名改成非isXxx的格式,比如checkGoodStatus(),这样序列化框架就不会把它识别为属性的getter了:

    @Data 
    public class Student{ 
        private String userName; 
        private String id; 
        
        public boolean checkGoodStatus(){ 
            return true;
        } 
    }
    

这几种方法里,前两种更推荐——第一种专注解决序列化时的忽略需求,第二种则是从Lombok层面彻底排除该方法的属性关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:23:52