类型安全配置:获取地图
Typesafe config: get as map
googlesheets{
dmkb_sheet = "1xEC8CPlKn654321wcoS_JB12345cPPiaA0M"
other_sheet = "123isS0M30TH3R1D"
}
我想使用 myConfig.getAsMap("googlesheets")
之类的东西并将两个嵌套条目作为 Map。不存在这样的方法。那么将两个嵌套条目加载为 Map 的最简单方法是什么?
好的,这很简单。
myConfig.getConfig("googlesheets").entrySet()
成功了
(我一直关注有 "get" 前缀的方法,所以错过了)
对于简单的一些定义,你可以使用这样的东西:
val config = conf.atKey("googlesheets")
config.root.keySet.asScala.map(key ⇒ key → config.getString(key)).toMap
我认为使用库将配置映射到案例 类 会更容易,例如 pureconfig
谢谢。我通过 re-writing 你的回答让它工作如下:
config.entrySet().asScala.map(e => e.getKey -> e.getValue.render()).toMap
我在用 scala Map[String, String]
@Senthil 的答案最接近我的答案,但是引用了 Map 值,即它们用双引号括起来,这导致了一个不容易发现的严重错误.我能够解决它的方法是 configValue.unwrapped().toString()
而不是 configValue.render()
在此之前我尝试了 render()
各种 ConfigRenderOptions
但我没有得到想要的结果
config
.getConfig("<key>")
.entrySet()
.asScala
.map(e => e.getKey -> e.getValue.unwrapped().toString)
.toMap
我在 scala 中使用它,因此将它转换为 scala 类型
唉,typesafe config 本来就是一个很酷的库,却不得不将 config as Map 做得太难了!
googlesheets{
dmkb_sheet = "1xEC8CPlKn654321wcoS_JB12345cPPiaA0M"
other_sheet = "123isS0M30TH3R1D"
}
我想使用 myConfig.getAsMap("googlesheets")
之类的东西并将两个嵌套条目作为 Map。不存在这样的方法。那么将两个嵌套条目加载为 Map 的最简单方法是什么?
好的,这很简单。
myConfig.getConfig("googlesheets").entrySet()
成功了
(我一直关注有 "get" 前缀的方法,所以错过了)
对于简单的一些定义,你可以使用这样的东西:
val config = conf.atKey("googlesheets")
config.root.keySet.asScala.map(key ⇒ key → config.getString(key)).toMap
我认为使用库将配置映射到案例 类 会更容易,例如 pureconfig
谢谢。我通过 re-writing 你的回答让它工作如下:
config.entrySet().asScala.map(e => e.getKey -> e.getValue.render()).toMap
我在用 scala Map[String, String]
@Senthil 的答案最接近我的答案,但是引用了 Map 值,即它们用双引号括起来,这导致了一个不容易发现的严重错误.我能够解决它的方法是 configValue.unwrapped().toString()
而不是 configValue.render()
在此之前我尝试了 render()
各种 ConfigRenderOptions
但我没有得到想要的结果
config
.getConfig("<key>")
.entrySet()
.asScala
.map(e => e.getKey -> e.getValue.unwrapped().toString)
.toMap
我在 scala 中使用它,因此将它转换为 scala 类型
唉,typesafe config 本来就是一个很酷的库,却不得不将 config as Map 做得太难了!