【发布时间】:2016-12-01 14:09:06
【问题描述】:
假设我有一个能够序列化为 json 的 scala 案例类(使用 json4s 或其他库):
case class Weather(zip : String, temp : Double, isRaining : Boolean)
如果我使用的是HOCON 配置文件:
allWeather {
BeverlyHills {
zip : 90210
temp : 75.0
isRaining : false
}
Cambridge {
zip : 10013
temp : 32.0
isRainging : true
}
}
有没有办法使用typesafe config自动实例化Weather对象?
我正在寻找某种形式的东西
val config : Config = ConfigFactory.parseFile(new java.io.File("weather.conf"))
val bevHills : Weather = config.getObject("allWeather.BeverlyHills").as[Weather]
该解决方案可以利用"allWeather.BeverlyHills" 引用的值是一个json“blob”这一事实。
我显然可以编写自己的解析器:
def configToWeather(config : Config) =
Weather(config.getString("zip"),
config.getDouble("temp"),
config.getBoolean("isRaining"))
val bevHills = configToWeather(config.getConfig("allWeather.BeverlyHills"))
但这似乎不优雅,因为对天气定义的任何更改也需要更改为 configToWeather。
提前感谢您的评论和回复。
【问题讨论】:
标签: scala typesafe-config hocon