【发布时间】:2020-01-29 23:33:07
【问题描述】:
我很想用这个:
@Getter
@ToString
@RequiredArgsConstructor(onConstructor_ = {@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)})
private static class RestErrorObject {
private final String error; // optional
private final String message; // optional
private final String path; // optional
private final String status; // optional
private final String timestamp; // optional
}
但是,我必须使用这个:
@Getter
@ToString
private static class RestErrorObject {
private final String error; // optional
private final String message; // optional
private final String path; // optional
private final String status; // optional
private final String timestamp; // optional
@JsonCreator
RestErrorObject(@JsonProperty("error") String error, @JsonProperty("message") String message,
@JsonProperty("path") String path, @JsonProperty("status") String status,
@JsonProperty("timestamp") String timestamp) {
this.error = error;
this.message = message;
this.path = path;
this.status = status;
this.timestamp = timestamp;
}
}
有什么方法可以将 Lombok 的 RequiredArgsConstructor 注释与 Jackson 的 JsonCreator 一起使用?问题似乎是杰克逊古老的要求,即多参数构造函数中的每个参数都用@JsonProperty 注释。我知道这是Jackson无法通过反射确定参数名称的Java事物(或至少是Java 8事物),因此注释必须存在,因此Jackson知道将每个字段从json传递到构造函数的位置。可悲的是,这似乎是多余的。
【问题讨论】:
-
将
lombok.anyConstructor.addConstructorProperties = true放入您的lombok.config文件有帮助吗?