假设我有这样的配置:
root {
value1: 1
value2: 2
values {
dynamic1 {
static1: 10
static2: "test"
}
dynamic2 {
static1: 10
static2: "test"
}
}
}是否有可能以及如何获得收藏(可能是地图?)root.values元素的子元素,当它们有动态名称时?
我已经找到了方法Config.getConfigList,但它没有提供'subconfigs‘的名称。
发布于 2015-12-08 23:08:55
有很多混乱,因为每个Config都有一个根(整个对象的根),但是你的象形文字的顶部也叫做根,我们讨论的是两个不同的根。以下是scala的摘录,它说明了正在发生的事情:
cfig是Config型的cfig.root()的类型是ConfigObject,您可以在其中迭代子程序,并可以在其中调用entrySet和keySet。在您的例子中,cfig.root()的独生子是root,它是您的层次结构的顶部。cfig.getObject("root")是ConfigObject类型的,但它的子级比您的层次结构( value1、value2、values )低一级。
scala> cfigConfig(SimpleConfigObject({"root":{"value1":1,"value2":2,“值”:{“dynamic1”:{“static1”:10,“static2”:“测试”},"dynamic2":{"static1":10,“static2”:“测试”}})
scala> cfig.root()
res74: com.typesafe.config.ConfigObject = SimpleConfigObject({"root":{"value1":1,"value2":2,"values":{"dynamic1":{"static1":10,"static2":"test"},"dynamic2":{"static1":10,"static2":"test"}}}})
scala> val c2 = cfig.getObject("root")
c2: com.typesafe.config.ConfigObject = SimpleConfigObject({"value1":1,"value2":2,"values":{"dynamic1":{"static1":10,"static2":"test"},"dynamic2":{"static1":10,"static2":"test"}}})
scala> c2.entrySet.size
res72: Int = 3
scala> c2.keySet.toSet
res73: scala.collection.immutable.Set[String] = Set(value2, value1, values)发布于 2015-12-08 22:04:06
试试这个:
// Map[String,String]
val values = node.root().keySet.asScala map (id =>
id -> node.getString(id)
) toMap说明:您不能查询值映射(不确定原因),但是可以通过调用ConfigObject从node.root().keySet.asScala获得键列表。然后您可以使用这些键来使用任何现有的方法,如getString、getConfig等。
https://stackoverflow.com/questions/34166808
复制相似问题