玩2.4-带泛型类型的ScalaJson的隐式读取

玩2.4-带泛型类型的ScalaJson的隐式读取,scala,playframework,playframework-2.4,Scala,Playframework,Playframework 2.4,使用Play 2.4 ScalaWS。我定义了一个方法,该方法接受类型manifest T并执行对外部API的GET请求。问题是它不会编译,因为没有用于解析JSON的隐式读取 代码如下: def myGet[T](path: String)(implicit m: Manifest[T]): Future[Either[model.MyError,T]] = { val url = MY_HOST+"/"+path ws .url(url)

使用Play 2.4 ScalaWS。我定义了一个方法,该方法接受类型manifest T并执行对外部API的GET请求。问题是它不会编译,因为没有用于解析JSON的隐式读取

代码如下:

def myGet[T](path: String)(implicit m: Manifest[T]): Future[Either[model.MyError,T]]  = {
    val url = MY_HOST+"/"+path
    ws
      .url(url)
      .withHeaders(myHeaders: _*)
      .get()
      .map { response =>
        try {
          Right(response.json.as[T])
        } catch {
          // check if this response was an error
          Left(response.json.as[model.MyError])
        }
      }

  }
编译错误具体是:

Compilation error[No Json deserializer found for type T. Try to implement an implicit Reads or Format for this type.]
我不知道最简单的方法是什么。谢谢你的帮助

编辑 我还尝试了隐式m:Manifest[T],reads:reads[T],但没有成功。

结果表明,使用隐式m:Manifest[T],readsT:reads[T]并将读取作为隐式参数是正确的方法。我必须运行sbt clean,因为增量编译器中的缓存不正确


它现在工作正常。

似乎不需要清单[T],尽管很难从上下文中分辨出来。只是一个想法。以下是我如何以过于简单的形式使用它:def fetchProfile=myGet[UserProfile]/user