我有一个如下HOCON Config格式的conf文件。
mapConfig :[
{ name = "AAA", value = "BBBB" },
{ name = "CCC", value ="DDD" },
{ name = "EEE", value ="FFF"}]
假设我有一个类似下面的案例类,
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 (_,_) )
如何解决此问题并获得所需格式的值?
答案 0 :(得分:1)
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
密钥。