Java框架在YAML中插入标记

时间:2017-05-02 06:52:35

标签: java yaml string-interpolation

对于Java,是否存在可以在YAML中插入令牌的现有可靠框架?

我的目标是我希望将YAML的一部分放到外部文件中;我可能在YAML中嵌入了一些XML或JSON,我希望能够将它们外部化,以便我的YAML看起来更漂亮。

让我们说例如我有这个YAML模板:

Root:
  PropertyA: ${valueA}
  PropertyB: | 
     ${valueB}

${valueA}Hello

${valueB}是:

wonderful 
    world

我希望最终的YAML文件是

Root:
  PropertyA: Hello
  PropertyB: |
    wonderful
        world

请注意,“世界”前面的空间会被保留。

我非常乐意使用一些YAML解析器来编写自己的代码,但是如果已经有一些开源工具可以做到这一点,为什么呢?)

我试图谷歌周围的这种工具,但没有真正有用的东西:(

1 个答案:

答案 0 :(得分:0)

仔细看看SnakeYaml;它实际上可以做我需要的。您需要做的就是拥有一个Constructor子类并覆盖constructScalar()方法:

Constructor constructor = new Constructor() {
    @Override
    public Object constructScalar(ScalarNode node) {
        if (isToken(node.getValue()) {
            return interpolateToken(node.getValue());
        }

        return super.constructScalar(node);
    }
}

Yaml yaml = new Yaml(constructor);
yaml.load(yamlReader);