Предположим, у меня есть класс case scala с возможностью сериализации в json (используя 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"))
Но это кажется неэлегантным, поскольку любое изменение определения погоды также потребует изменения в configToWeather
.
Заранее благодарим вас за обзор и ответ.