如何使用Play Json为泛型类型定义隐式反序列化器

时间:2018-03-28 06:07:08

标签: scala playframework play-json

我有一种接受T的方法,我想Json.parse(someString).as[T]

现在我传入的T类具有定义的隐式格式,例如implicit lazy val format: Format[Foo] = ...。但是,我希望能够告诉编译器在运行时找到隐式格式而不是抱怨"没有找到类型为T&#34的Js​​on反序列化器。

1 个答案:

答案 0 :(得分:3)

正确的方法是在T上添加context bound

def yourMethod[T: Reads](...) = ...

它不会在运行时查找implicits(Scala无法做到),但如果范围内没有类似format的隐式,则不会让您调用该方法。当它存在时,它会将其传递给as以及任何其他需要它的方法。

如果您的方法需要序列化以及序列化,则您需要两个边界:T: Reads: WritesT: Format