首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flat Vert.x YAML配置

Flat Vert.x YAML配置
EN

Stack Overflow用户
提问于 2020-05-11 22:17:55
回答 2查看 332关注 0票数 1

我们想知道是否可以将YAML配置对象扁平化?例如,我们的配置文件如下所示

代码语言:javascript
复制
vertx:
  verticle:
    instance: 1
  metrics:
    options:
      enabled: true

我们只想通过一个操作访问我们的配置值,例如:

代码语言:javascript
复制
config.getInteger("vertx.verticle.instance")

而不是必须这样做:

代码语言:javascript
复制
config.getJsonObject("vertx").getJsonObject("verticle").getInteger("integer")

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-05-12 12:35:28

来自RFC6901的Vert.x supports Json指针。你可以这样做:

代码语言:javascript
复制
JsonPointer pointer = JsonPointer.from("/vertx/verticle/instance");
Integer instance = (Integer) pointer.queryJson(config);
票数 2
EN

Stack Overflow用户

发布于 2020-05-11 23:28:33

虽然API不直接支持它,但它看起来很容易自己实现:

代码语言:javascript
复制
public class FlatConfig {
    private final JsonObject root;

    public FlatConfig(JsonObject root) {
        this.root = root;
    }

    private JsonObject walk(String[] path) {
        JsonObject cur = root;
        // skip last element since it contains the value
        for (int i = 0; i < path.length - 2; i++) {
            cur = cur.getJsonObject(path[i]);
        }
        return cur;
    }

    public Integer getInteger(String path) {
        final String[] splitPath = path.split(".");
        return walk(splitPath).getInteger(splitPath[splitPath.length - 1]);
    }
}

您可以根据需要添加用于检索其他类型的其他方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61731904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档