Java 使用Lombok RequiredArgsConstructor作为JsonCreator

Java 使用Lombok RequiredArgsConstructor作为JsonCreator,java,jackson,lombok,Java,Jackson,Lombok,我想用这个: @Getter @ToString @RequiredArgsConstructor(onConstructor_ = {@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)}) private static class RestErrorObject { private final String error; // optional private

我想用这个:

    @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;
        }
    }
但是,我必须用这个:

    @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一起使用吗?问题似乎是由来已久的Jackson要求用@JsonProperty注释多参数构造函数中的每个参数。我知道这是Java的东西,或者至少是Java 8的东西,Jackson无法通过反射来确定参数名称,因此注释必须存在,以便Jackson知道从json到构造函数的每个字段的传递位置。很遗憾,这似乎是多余的。

我遇到了与您相同的问题,在这里找到了解决方案

要在生成的构造函数上添加注释,可以使用 onConstructor=@{@AnnotationsHere},但要小心;这是一个 实验特征。有关更多详细信息,请参阅上的文档 onX功能

即使我没有找到对这个@_…)的引用,我假设它会将注释转换为编译器的常量。

将lombok.anyConstructor.addConstructorProperties=true放入lombok.config文件是否有帮助?另外,您可以使用这个@allargsconstuctoronstructor.={@JsonCreatormode=JsonCreator.Mode.PROPERTIES}