Я хотел бы использовать это:
@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;
}
}
Есть ли способ, которым я могу использовать аннотацию RequiredArgsConstructor Lombok с ДжексономJsonCreator? Похоже, проблема в том, что давнее требование Джексона, чтобы каждый параметр в конструкторе с несколькими аргументами был аннотирован @JsonProperty. Я понимаю, что это вещь Java (или, по крайней мере, вещь Java 8), что Джексон не может определить имена аргументов с помощью отражения, поэтому аннотации должны существовать, чтобы Джексон знал, куда передать каждое поле из json в конструктор. Это только кажется печально излишним.