Использование Lombok RequiredArgsConstructor в качестве JsonCreatorJAVA

Программисты JAVA общаются здесь
Anonymous
Использование Lombok RequiredArgsConstructor в качестве JsonCreator

Сообщение Anonymous »

Мне бы хотелось это использовать:

Код: Выделить всё

    @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 в конструктор. Это просто кажется, к сожалению, излишним.

Подробнее здесь: https://stackoverflow.com/questions/581 ... soncreator

Вернуться в «JAVA»