Sto utilizzando Play Framework 2.1 e Scala 2.10.1 e vorrei creare una funzione generale per costruire un JsArray da un elenco di case case personalizzate.Tipo di differimento Scala
private def buildJsArray[T](l: List[T])(result: JsArray): JsArray = {
l match {
case List() => result
case x::xs => buildJsArray(xs)(result :+ Json.toJson(x)) // compiling error here!
}
}
utilizzo:
val applyJsonArray = buildJsArray(List[Apple])(new JsArray())
Tuttavia, un errore di compilazione è gettato:
No Json deserializer found for type T. Try to implement an implicit Writes or Format for this type.
ho un deserializzatore JSON scritto per la particolare classe caso (vale a dire, Case class di Apple).
Come si differisce il compilatore per verificare il tipo di x in fase di esecuzione anziché in fase di compilazione?
Grazie mille!
risposta perfetta, nulla da aggiungere :) –
Quando si tratta di JSObject (s), non è possibile utilizzare il tipo di OFormat generico per il vostro implicito. Dovrai eseguire una implicita per OWrite e una per Letture – JMess