假设我有一个能够序列化为 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
}
}
有没有办法使用类型安全配置来自动实例化一个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"))
但这似乎不优雅,因为对 Weather 定义的任何更改也需要更改为configToWeather
.
提前感谢您的评论和回复。