gpt4 book ai didi

java - 使用 LombokRequiredArgsConstructor 作为 JsonCreator

转载 作者:行者123 更新时间:2023-12-02 00:02:44 36 4
gpt4 key购买 nike

我很想用这个:

    @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 传递到构造函数中的位置。可悲的是,这似乎是多余的。

最佳答案

我和你遇到了同样的问题,在这里找到了解决方案 https://projectlombok.org/features/constructor

To put annotations on the generated constructor, you can use onConstructor=@__({@AnnotationsHere}), but be careful; this is an experimental feature. For more details see the documentation on the onX feature.

@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
}

即使我没有发现对此 @__(...) 的引用,我也认为它将注释转换为编译器的常量。

关于java - 使用 LombokRequiredArgsConstructor 作为 JsonCreator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58171839/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com