如何使用Json.Format[T]
创建案例类的OFormat [T]?
答案 0 :(得分:3)
这是我发现的(非常)简单的解决方案: 创建一个辅助对象:
import play.api.libs.json.{Format, OFormat, JsObject, JsValue, JsResult}
object JsonUtil {
def oFormat[T](format:Format[T]) : OFormat[T] = {
val oFormat: OFormat[T] = new OFormat[T](){
override def writes(o: T): JsObject = format.writes(o).as[JsObject]
override def reads(json: JsValue): JsResult[T] = format.reads(json)
}
oFormat
}
}
并像这样使用它:
import play.modules.reactivemongo.json._
implicit val formatFileToSave : Format[FileToSaveData] = Json.format[FileToSaveData]
implicit val oFormatFileToSave: OFormat[FileToSaveData] = JsonUtil.oFormat(formatFileToSave)
我希望明确传递“格式”,但是当我尝试使用以下
运行时 def oFormat[T]()(implicit format:Format[T])
我有java.lang.RuntimeException
如果有人能够解释为什么或如何使用“隐含”而没有RuntimeException
,我会很高兴听到。
我使用Java 8运行,播放2.4.0和scala 2.11.7(显然FileToSaveData
是我要序列化的案例类)