Использование Lombok RequiredArgsConstructor в качестве JsonCreator - PullRequest
0 голосов
/ 30 сентября 2019

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

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

...