正如在文档中指定并从源代码中看到的那样,SnakeYAML使用枚举的名称。我想要的是通过枚举值解析值,例如:
Enum:
public enum Strategy {
ALWAYS_RUN("always-run"),
ALWAYS_SKIP("always-skip"),
DEPENDS("depends");
...
}YAML:
branches:
trunk: always-skip
bugfix: depends
default: always-run原因是我们的代码风格迫使我们对枚举常量使用大写字母,而我希望将数据保持在yaml文件的小写中。
发布于 2014-08-01 11:43:09
据我所知,这是不可能的。Enum常量是私有的,因此其他类无法访问,因此YAML解析器无法构造对象。
虽然并不完美,但您可以使用别名为枚举创建一个昵称。
发布于 2021-01-05 00:09:48
还有一种方法可以做到这一点。可能它不干净,但工作正常。
org.yaml.snakeyaml.constructor.Constructor创建一个新的构造器类。ScalarConstuctor protected class,其代码实现与基类ScalarConstructor类中的代码实现相同,但枚举解析实现除外。constructStandardJavaInstance中,检查是否存在大写或小写名称的enum。Yaml对象(步骤1)https://stackoverflow.com/questions/25079332
复制相似问题