有没有办法在Spring Boot中使用OpenAPI生成器在@JsonCreator注释上设置委托模式?

Is there a way to set DELEGATING mode on @JsonCreator annotation using OpenAPI generator in Spring Boot?

提问人:Federico 提问时间:11/15/2023 更新时间:11/15/2023 访问量:20

问:

我有一个 YAML 文件,我在其中定义了一个 Enum 来测试 java 方法:

    MessageEnum:
      enum:
      - KO
      - OK
      type: string

该插件在 POM 上使用各种 configOptions 定义,如下所示:

  <groupId>org.openapitools</groupId>
  <artifactId>openapi-generator-maven-plugin</artifactId>
  <version>7.0.1</version>

然后创建以下 Java 类:

public enum MessageEnum {
  
  KO("KO"),
  
  OK("OK");

  private String value;

  MessageEnum(String value) {
    this.value = value;
  }

  @JsonValue
  public String getValue() {
    return value;
  }

  @Override
  public String toString() {
    return String.valueOf(value);
  }

  @JsonCreator
  public static MessageEnum fromValue(String value) {
    for (MessageEnum b : MessageEnum.values()) {
      if (b.value.equals(value)) {
        return b;
      }
    }
    throw new IllegalArgumentException("Unexpected value '" + value + "'");
  }
}

问题是运行测试时,我在枚举上收到以下错误:“Json com.fasterxml.jackson.databind.exc.MismatchedInputException:输入不匹配读取枚举”

该错误可以通过将@JsonCreator使用的默认模式更改为 DEPACATING 来解决,如下所示: https://github.com/FasterXML/jackson-module-kotlin/issues/336#issuecomment-630587525

所以我的问题是:有没有办法告诉OpenAPI使用这种模式而不是默认模式?

java json spring-boot 枚举 openapi-generator

评论


答: 暂无答案