@JsonIgnore无效 如何排除Java接口JSON响应中的多余字段
问题原因
Jackson序列化时默认会将符合JavaBean命名规范的公共方法识别为对应字段的getter方法进行序列化。你定义的public boolean isEmpty()方法符合boolean类型字段的getter命名规则,因此会被序列化为empty字段。你之前添加的@JsonIgnore仅作用于静态常量EMPTY,对该方法没有生效。
解决方案
- 方案1:直接给
isEmpty()方法添加@JsonIgnore注解,阻止该方法被序列化
// Function to check if the current object is empty @JsonIgnore public boolean isEmpty() { return this.equals(EMPTY); }
- 方案2:在类上添加
@JsonIgnoreProperties注解,指定要忽略的字段名
@Data @JsonInclude(Include.NON_NULL) @JsonIgnoreProperties(value = {"empty"}) public class RToleranceResponse implements Serializable { // 类内原有逻辑不变 }
额外优化建议
你当前的类上同时标注了@Data、@Getter、@Setter三个Lombok注解,其中@Data已经默认包含了@Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor的功能,保留@Data即可,其余两个注解可以删除。
内容的提问来源于stack exchange,提问作者Masoom Raza
相关产品推荐
相关产品推荐

