作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Play,我有一个名为 RepositoryMetadata
的对象。我想在名为 post
的方法中使用该对象。该方法的定义如下。def post[T](body: T)(implicit wrt: Writeable[T], ct: ContentTypeOf[T]): Future[WSResponse]
。
如何将对象 RepositoryMetadata
变成 Writeable
。
最佳答案
对于任何感兴趣的人,我在使用 Play 的 WSClient 时遇到了类似的问题。我目前使用的版本 (2.5.3) 具有以下签名:
def post[T](body: T)(implicit wrt: Writeable[T]): Future[WSResponse]
play.api.libs.json.Writes
转换器),您可以使用以下内容:
import play.api.http.{ContentTypeOf, ContentTypes, Writeable}
import play.api.libs.json.Writes
import play.api.mvc.Codec
trait WritableImplicits {
implicit def jsonWritable[A](implicit writes: Writes[A], codec: Codec): Writeable[A] = {
implicit val contentType = ContentTypeOf[A](Some(ContentTypes.JSON))
val transform = Writeable.writeableOf_JsValue.transform compose (writes.writes _)
Writeable(transform)
}
}
object WritableImplicits extends WritableImplicits
import WritableImplicits._
...
val metadata: RepositoryMetadata = ???
wsClient.url(url).post(metadata)
...
Writes
,您可以执行以下操作:
import play.api.libs.json._
object RepositoryMetadata {
implicit val repositoryMetadataWrites = Json.writes[RepositoryMetadata]
}
关于scala - Play Framework : How to define a writable object in scala?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35956205/
我是一名优秀的程序员,十分优秀!