我一直在尝试创建一种方法,将我拥有的值组合到Yaml.load可以读取的Map中。所以,例如:
Map<String, Object> map = new HashMap<String, Object>();
map.put("example.key.abc", "test");
map.put("example.key.def", "another test");
map.put("example.test", "yet another test");
map.put("example2.ex", "ex2");
我希望将其变成Yaml可以阅读的地图。我尝试将abc和def放入带有值的地图中,然后将该地图放入带有其他值的地图中。我似乎无法让这个工作。此外,我希望这能够使用任何键,因此手动执行映射将无法正常工作。如果我可以通过其余的代码运行一个可以通过Yaml读取的Map,那么这是我希望从上面的键获得的输出:
example:
key:
abc: test
def: another test
test: yet another test
example2:
ex: ex2
我似乎无法制作可以将我拥有的Map组合到Yaml可以理解的Map中的方法。那里有一个API,或者这只是一个非常简单的方法,我只是想不通?感谢任何帮助,谢谢。
答案 0 :(得分:0)
您如何看待Guavas Splitter(特别是MapSplitter #withKeyValueSeparator),并结合mapTransformation之类的
Maps.transformEntries(fromMap, transformer)
所以得到的地图,你可以给snakeYaml看起来像
Map<String,Map<String,Map<String, String>>> =
ImmutableMap.of("example", ImmutableMap.of("key", ImmutableMap.of("abc", "test")...
btw:你知道来自typesafe-config的HOCON,这个库支持读取和写入点分隔(Map forming)配置文件
foo.bar=10
foo.baz=12
到
Config foo = conf.getConfig("foo");
int bar2 = foo.getInt("bar");
或
int bar1 = conf.getInt("foo.bar");