У меня есть файл, который содержит следующий массив объектов JSON:
[
{
"type": "home",
"number": 1111
},
{
"type": "office",
"number": 2222
},
{
"type": "mobile",
"number": 3333
}
]
В Play Framework 2.x я бы определил неявный преобразователь Reads для чтения файла и преобразования его в структуру Scala:
implicit val implicitRead : Reads[MyClass] = (
(JsPath \ "type").read[String] and
(JsPath \ "number").read[Int]
) (MyClass.apply _)
класс дел Scala, определенный как:
case class MyClass (myType: String, myNumber: Int)
и анализ JSON с помощью:
val json = // file record content
json.validate[MyClass] match {
case s: JsSuccess[MyClass] => {
val myObject: MyClass = s.get
// do something with myObject
}
case e: JsError => {
// error handling flow
}
Теперь моя проблема в том, что я знаю структуруфайла JSON только в runtime
, а не в compilation time
.Можно ли построить как неявный конвертер Reads, так и класс case в runtime
?