我有一种接受T的方法,我想Json.parse(someString).as[T]
。
现在我传入的T类具有定义的隐式格式,例如implicit lazy val format: Format[Foo] = ...
。但是,我希望能够告诉编译器在运行时找到隐式格式而不是抱怨"没有找到类型为T&#34的Json反序列化器。
答案 0 :(得分:3)
正确的方法是在T
上添加context bound:
def yourMethod[T: Reads](...) = ...
它不会在运行时查找implicits(Scala无法做到),但如果范围内没有类似format
的隐式,则不会让您调用该方法。当它存在时,它会将其传递给as
以及任何其他需要它的方法。
如果您的方法需要序列化以及序列化,则您需要两个边界:T: Reads: Writes
或T: Format
。