首页 > 解决方案 > yaml 等于 equalsIgnoreCase

问题描述

我在创建枚举值的文件中有 api.yaml

Language:
      type: string
      enum:
      - ar
      - en
      - fr

下面生成的文件,在 fromValue 方法中,当我手动更改它并重新保存 api.yaml 文件时,我需要更改等于 equalsIgnoreCase 更改消失了

public enum Language {
      AR("ar"),
      EN("en"),
      FR("fr");
      private String value;
      Language(String value) {
        this.value = value;
      }
      @Override
      @JsonValue
      public String toString() {
        return String.valueOf(value);
      }
      @JsonCreator
      public static Language fromValue(String text) {
        for (Language b : Language.values()) {
          if (String.valueOf(b.value).equals(text)) {
            return b;
          }
        }
        throw new IllegalArgumentException("Unexpected value '" + text + "'");
      }
    }

标签: javaspringyaml

解决方案


枚举总是对生成器不区分大小写。不过有几个选择。您可以在 api 定义中使用正则表达式模式而不是枚举:

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/EnumUtils.html

或者您可以在 Spring 中查看这些属性,但我不确定它是否有助于您生成的代码:

spring.jackson.mapper.accept-case-insensitive-enums=true

尽管这仅适用于自动反序列化的数据。


推荐阅读