[英]Get typesafe config value as Array of Case class
我有一個下面的HOCON Config格式的conf文件。
mapConfig :[
{ name = "AAA", value = "BBBB" },
{ name = "CCC", value ="DDD" },
{ name = "EEE", value ="FFF"}]
假設我有一個如下的case類,
case class ConfigData (val name: String, val value: String)
我試圖獲取配置值
Array [ConfigData["AAA","BBBB"], ConfigData["CCC","DDD"],ConfigData["EEE","FFF"]]
我運行了以下代碼,該代碼未以預期格式返回數據。 我收到“擴展功能缺少參數類型”錯誤。
val config = ConfigFactory.parseResources("config-prop")
val configArray = config.getConfigList("mapConfig").asScala.map (ConfigData (_,_) )
如何解決此問題並以所需格式獲取值?
config.getConfigList("mapConfig").asScala.map (ConfigData (_,_) )
在.map
您將config作為參數傳遞給ConfigData(_, _)
,該參數需要2個參數。
我猜是這樣的:
config.getConfigList("mapConfig").asScala.map { config =>
val name = config.getString("name")
val value = config.getString("value")
ConfigData(name, value)
}
會更好。 或者使用https://github.com/pureconfig/pureconfig,您可以:
case class ConfigData(val name: String, val value: String)
case class ConfigList(mapConfig: List[ConfigData])
pureconfig.loadConfig[ConfigList] // Either[pureconfig.error.ConfigReaderFailures, ConfigList]
但是,默認情況下它需要一些約定,因此它將期望您的配置具有map-config
而不是mapConfig
鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.