【发布时间】:2017-03-23 00:58:59
【问题描述】:
我有一个 Scala-Play Web 服务应用程序,它进行一些计算以生成 Saddle frames 并需要将这些鞍帧转储到 Json 中。所以我这样定义frameWrites:
object JsonUtils {
implicit def frameWrites[RX, CX, E] = new Writes[Frame[RX, CX, E]] {
override def writes(frame: Frame[RX, CX, E]): JsValue = {
val json: JsArray = Json.arr(
(0 until frame.numRows).map { i =>
Json.obj(
frame.rowIx.at(i).toString ->
(0 until frame.numCols).map { j =>
Json.obj(
frame.colIx.at(j).toString -> frame.at(i, j).toString
)
}
)
})
json
}
}
}
然后尝试像这样使用它:
import utils.JsonUtils._
def computingAction = Action {
val pnlStatistics: Frame[String, String, Double] = ???
Ok(pnlStatistics)
}
但总是得到错误Cannot write an instance of org.saddle.Frame[String,String,Double] to HTTP response. Try to define a Writeable[org.saddle.Frame[String,String,Double]]
为了明确起见,我也尝试将其定义为 JsonUtils 的一部分:
implicit def frameSSDWrites = frameWrites[String, String, Double]
但这一个也没有被捡起......
UPDATE 显式调用作者有效:
Ok(frameWrites.writes(results("PnlStatistics")))
【问题讨论】:
-
但是你需要实现 Writeable 而不是 Writes,对吧?
标签: json scala playframework saddle