【问题标题】:yaml equals to equalsIgnoreCaseyaml 等于 equalsIgnoreCase
【发布时间】:2020-07-05 11:02:05
【问题描述】:

我在创建枚举值的文件中有 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 + "'");
      }
    }

【问题讨论】:

  • 您使用什么库/命令从 yaml 定义生成代码?

标签: java spring yaml


【解决方案1】:

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

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

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

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

虽然这仅适用于自动反序列化的数据。

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 2021-10-16
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2017-08-11
    • 2012-05-26
    相关资源
    最近更新 更多