获取类型安全的配置值作为大小写数组 class
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"}]
假设我有一个案例 class 如下所示,
case class ConfigData (val name: String, val value: String)
我试图将配置值设置为
Array [ConfigData["AAA","BBBB"], ConfigData["CCC","DDD"],ConfigData["EEE","FFF"]]
我 运行 下面的代码没有以预期的格式返回数据。我收到错误 "missed parameter type for expanded function"。
val config = ConfigFactory.parseResources("config-prop")
val configArray = config.getConfigList("mapConfig").asScala.map (ConfigData (_,_) )
如何解决这个问题并获得所需格式的值?
config.getConfigList("mapConfig").asScala.map (ConfigData (_,_) )
在 .map
中,您将配置作为参数传递给 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
键。
我有一个 HOCON Config 格式的 conf 文件。
mapConfig :[
{ name = "AAA", value = "BBBB" },
{ name = "CCC", value ="DDD" },
{ name = "EEE", value ="FFF"}]
假设我有一个案例 class 如下所示,
case class ConfigData (val name: String, val value: String)
我试图将配置值设置为
Array [ConfigData["AAA","BBBB"], ConfigData["CCC","DDD"],ConfigData["EEE","FFF"]]
我 运行 下面的代码没有以预期的格式返回数据。我收到错误 "missed parameter type for expanded function"。
val config = ConfigFactory.parseResources("config-prop")
val configArray = config.getConfigList("mapConfig").asScala.map (ConfigData (_,_) )
如何解决这个问题并获得所需格式的值?
config.getConfigList("mapConfig").asScala.map (ConfigData (_,_) )
在 .map
中,您将配置作为参数传递给 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
键。