我最近有同样的问题。
有几种方法可以解决它:
lombok.config
在项目的根文件夹中创建包含以下内容的文件:
// says that it's primary config (lombok will not scan other folders then)
config.stopBubbling = true
// forces to copy @JsonIgnore annotation on generated constructors / getters / setters
lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonIgnore
...
在您的班级中,您可以像往常一样在字段级别使用此注释:
@JsonIgnore
private String name;
注意:如果你使用 lombok @RequiredArgsConstructor 或 @AllArgsConstructor,那么你应该删除@JsonIgnore
with的所有用法@JsonIgnoreProperties
(如解决方案 #4 中所述,或者你仍然可以选择解决方案 #2 或 #3)。这是必需的,因为@JsonIgnore
注解不适用于构造函数参数。
- 手动定义 Getter / Setter +
@JsonIgnore
在它们上添加注释:
@JsonIgnore
public String getName() { return name; }
@JsonIgnore
public void setName(String name) { this.name = name; }
- 使用
@JsonProperty
(它是只读的或只写的,但不能同时使用):
@JsonProperty(access = JsonProperty.Access.READ_ONLY) // will be ignored during serialization
private String name;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) // will be ignored during deserialization
private String name;
- 利用
@JsonIgnoreProperties({ "fieldName1", "fieldName2", "..."})
当类也有注释@AllArgsConstructor
或@RequiredArgsConstructor
.