如何避免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
相关产品推荐
相关产品推荐

