簡體   English   中英

獲取類型安全配置值作為Case類數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM