我正在使用 Play framework 2.1 和 Scala 2.10.1,并且想构建一个通用函数来从自定义案例类列表中构造一个 JsArray。
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!
}
}
用法:
val applyJsonArray = buildJsArray(List[Apple])(new JsArray())
但是,会引发编译错误:
No Json deserializer found for type T. Try to implement an implicit Writes or Format for this type.
我确实有一个为特定案例类(即 Apple 案例类)编写的 Json 反序列化器。
如何推迟编译器在运行时而不是在编译时检查 x 的类型?
非常感谢!