正如文档中指定并从源代码中看到的那样,SnakeYAML通过其名称处理枚举。我想要的是按枚举值解析值,例如:
枚举:
public enum Strategy {
ALWAYS_RUN("always-run"),
ALWAYS_SKIP("always-skip"),
DEPENDS("depends");
...
}
亚马尔:
branches:
trunk: always-skip
bugfix: depends
default: always-run
原因是我们的代码风格迫使我们对枚举常量使用大写,而我希望yaml文件中的数据保持小写。
还有另一种方法可以做到这一点。可能它不干净,但工作正常。
ScalarConstructor
受保护的类
,其代码实现与基本ScalarConstructor
类中的代码实现相同,但枚举解析实现除外constructStandardJavaInstance
中,检查是否存在名称为大写或小写的枚举
最后,使用构造函数(步骤1)创建Yaml
对象
据我所知,这是不可能的。枚举常量是私有的,因此其他类无法访问,因此YAML解析器将无法构造对象。
虽然不完美,但您可以使用别名为枚举创建昵称。
问题内容: 我正在尝试解析相同的JSON,但是现在我对类进行了一些更改。 我的班级现在看起来像: 此代码引发异常, 可以理解,因为按照我上一个问题的解决方案,GSON希望将Enum对象实际创建为 但是,由于从语法上讲这是不可能的,因此推荐的解决方案和解决方法是什么? 问题答案: 从Gson的文档中: Gson为枚举提供了默认的序列化和反序列化…如果您想更改默认的表示形式,则可以通过GsonBuil
文档中只有嵌套在其他对象中的映射/集合的示例,因此您可以执行以下操作: 但是,当地图格式位于文档的根目录时,如何定义它呢?
我试图将上面的文件加载到一个映射中,实体部分下的数据将映射到实体对象的集合。当我得到yaml解析器错误时,这是正确的yaml语法吗。
在angular 12应用程序上,我有enum: 我尝试如下定义Policy类型的变量: < code>route.data.policy的类型是< code>any。但是我得到了错误: 元素隐式具有“任何”类型,因为索引表达式不是“数字”类型。 如何将route.data.policy的值解析为枚举的< code>'Admin'或< code>'Manager'?
将grpc与Node一起使用,对我的查询的响应中的枚举将解析为整数值。但是,当我使用BloomRPC进行相同的查询时,枚举将解析为整数值。 是否有参数或选项可以强制使用Node grpc将这些枚举解析为字符串?
问题内容: 我想将YAML文档读取到自定义对象的映射(而不是map,默认情况下snakeYaml会这样做)。所以这: 将被加载到如下所示的地图中: 其中项目是: 我找不到使用snakeYaml做到这一点的方法,也找不到适合该任务的更好的库。 该文档仅包含将地图/集合嵌套在其他对象中的示例,因此您可以执行以下操作: 但是,当地图格式位于文档的根目录时,该如何定义呢? 问题答案: 您需要添加一个自定义