我有perks.conf:
autoshield {
name="autoshield"
price=2
description="autoshield description"
}
immunity {
name="immunity"
price=2
description="autoshield description"
}
premium {
name="premium"
price=2
description="premium description"
}
starter {
name="starter"
price=2
description="starter description"
}
jetpack {
name="jetpack"
price=2
description="jetpack description"
}
我想在我的应用程序中迭代这样的特权:
val conf: Config = ConfigFactory.load("perks.conf")
val entries = conf.getEntries()
for (entry <- entries) yield {
Perk(entry.getString("name"), entry.getInt("price"), entry.getString("description"))
}
但我找不到从config返回所有条目的适当方法。我尝试了config.root()
,但它似乎返回了所有属性,包括system,akka和许多其他属性。
答案 0 :(得分:31)
entrySet
折叠树。如果您只想迭代直接孩子,请使用:
conf.getObject("perks").asScala.foreach({ case (k, v) => ... })
k
将是“autoshield”和“immunity”,但不是“autoshield.name”,“autoshield.price”等。
这需要您导入scala.collection.JavaConverters._
。
答案 1 :(得分:20)
例如,您在Settings.scala
val conf = ConfigFactory.load("perks.conf")
如果你在root配置上调用entrySet
(不是conf.root()
,但是这个配置的根对象)它会返回很多垃圾,你需要做的就是把所有的好处放在一些perks.conf中的路径:
perks {
autoshield {
name="autoshield"
price=2
description="autoshield description"
}
immunity {
name="immunity"
price=2
description="autoshield description"
}
}
然后在Settings.scala
文件中获取此配置:
val conf = ConfigFactory.load("perks.conf").getConfig("perks")
然后在此配置上调用entrySet,您将获得所有不是来自根对象的条目,而是来自特权。不要忘记Typesafe Config是用java编写的,entrySet返回java.util.Set
,所以你需要导入scala.collection.JavaConversions._
答案 2 :(得分:0)
对任何可能需要它的人:
<?php
$headers = get_headers("http://www.example.com", 1);
echo $headers['Content-Encoding'];
?>
答案 3 :(得分:0)
getObject
为我提供了一个合格的json对象(例如timeout.ms = 5
变为{ timeout: { ms: 5 }
)。
我最终得到了:
conf.getConfig(baseKey).entrySet().foreach { entry =>
println(s"${entry.getKey} = ${entry.getValue.unwrapped().toString}")
}
答案 4 :(得分:0)
val common = allConfig.getConfig("column.audit")
val commonList = common.root().keySet()
commonList.iterator().foreach( x => {
println("Value is :: " + x)
}
)`
this should work. but if your keyset is will print indifferent order than app.conf.
eg:
`> cat application.conf`
`column {
audit {
load_ts = "current_timestamp",
load_file_nm = "current_filename",
load_id = "load_id"
}`
above scrip will print as
Value is :: [load_id, load_ts, load_file_nm]