平面垂直x YAML配置

平面垂直x YAML配置,yaml,config,vert.x,Yaml,Config,Vert.x,我们想知道是否有可能平放YAML配置对象?例如,我们的配置文件如下所示 vertx: verticle: instance: 1 metrics: options: enabled: true 我们希望只通过一个操作访问配置值,例如: config.getInteger("vertx.verticle.instance") 而不是必须这样做: config.getJsonObject("vertx").getJsonObject("verticle").g

我们想知道是否有可能平放YAML配置对象?例如,我们的配置文件如下所示

vertx:
  verticle:
    instance: 1
  metrics:
    options:
      enabled: true
我们希望只通过一个操作访问配置值,例如:

config.getInteger("vertx.verticle.instance")
而不是必须这样做:

config.getJsonObject("vertx").getJsonObject("verticle").getInteger("integer")

谢谢。

虽然API不直接支持它,但它似乎很容易自己实现:

public类FlatConfig{
私有最终JsonObject根;
公共FlatConfig(JsonObject根目录){
this.root=根;
}
私有JsonObject漫游(字符串[]路径){
JsonObject cur=根;
//跳过最后一个元素,因为它包含值
对于(int i=0;i
您可以根据需要添加其他方法来检索其他类型。

从RFC6901获取Vert.x Json指针。你可以做:

JsonPointer pointer = JsonPointer.from("/vertx/verticle/instance");
Integer instance = (Integer) pointer.queryJson(config);

谢谢您的回答,我更喜欢这种方法将一个JsonObject平坦化为另一个JsonObject。这里有一个建议:当然。如果您更改生成的Vert.x config结构,我会问您为什么要使用该API。我的意思是,您可以使用SnakeYAML将配置加载到POJO中,然后使用
config.vertx.verticle.instance
访问它……我不确定是否理解您的问题。我的用例是:-使用
ConfigRetriever
读取配置-使用read-config-to
DeploymentOptions
部署verticles-访问verticles内部的配置属性。我不太了解vert.x API,您可能更清楚自己在做什么。我的观点是,对于在YAML文件中轻松访问值的用例,这种方法并不理想。如果您需要在其他地方使用JsonObject进行API调用,那么它当然是合理的。